Подскажите пожалуйста начинающему джуниору, писал раньше тесты на selenide, сменил работу и теперь приходится осваивать python.
Нашел кусок видео-курсов Якова “Selenide на python”, попробовал повторить, но тест даже не запускается.
Я уверен, что все сделал неправильно) и любой питонист и без логов поймет, что тут не так.
Но если надо то я конечно же добавлю.
from selenium import webdriver
from selenium.common.exceptions import StaleElementReferenceException
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support.wait import WebDriverWait
browser = webdriver.Firefox()
class WaitingElement(object):
def __init__(self, css_selector):
self._locator = css_selector
def _finder(self):
return browser.find_element_by_css_selector(self._locator)
def __getattr__(self, item):
WebDriverWait(browser, 4).until(visible(self._finder))
return getattr(self.finder(), item)
def check(self, condition, *args):
WebDriverWait(browser, 4).until(condition(self._finder(), *args))
return self
def x(cssSelector):
return WaitingElement(cssSelector)
class text(object):
def __init__(self, finder, text_):
self.locator = finder
self.text = text_
def __call__(self, driver,):
try:
element_text = self.finder().text
return self.text in element_text
except StaleElementReferenceException:
return False
class visible(object):
def __init__(self, finder):
self.finder = finder
def __call__(self, driver):
try:
return self.finder().is_displayed()
except StaleElementReferenceException:
return False
browser.get("https://www.google.ru/")
x("#lst-ib").send_keys("google", Keys.ENTER)
Спасибо за совет, но к сожалению нужно написать свой, очень примитивный аналог selene.
Класс text и visible - это измененный селениумовские классы.
text нужен для такого рода проверок:
x(“css_locator”).assure(text, наличие текста)
Но основная цель реализовать своими силами умный искатель элементов, такой как $ в Selenide и S в Selene.
Спасибо большое, изменил и действительно все заработало)
Но теперь есть еще одна проблема, этот прокси элемент “x” не работает со стандартным селениумовским кликом. Вернее он сам думает, что нажимает на элемент но на самом деле этого не происходит.