fandorin_official
@fandorin_official
Герой серии исторических детективов.

Как правильно прописать css_selector элемента от набора элементов в методе WebDriverWait?

Есть у меня некоторые лист с элементами:
example_list = self.driver.find_elements_by_css_selector("div.holder")

В нем я ищу нужный мне элемент:
example_list.find_element_by_css_selector("i.icon")

Это элемент должен быть кликабельным.
Как правильно вписать данный элемент в ожидание:
WebDriverWait(self.driver, 10).until()
Если бы нужно было просто найти элемент по id или другому параметру - вопроса бы не возникало. А тут элемент от элемента...
  • Вопрос задан
  • 31 просмотр
Пригласить эксперта
Ответы на вопрос 1
@fandorin_official

попробуйте создать класс
берущий оба локатора и делающий оба поиска:

class waittest:
    def __init__(self, locator1, locator2, attr, value):
        self._locator1 = locator1
        self._locator2 = locator2
        self._attribute = attr
        self._attribute_value = value

    def __call__(self, driver):
        element1 = driver.find_element_by_xpath(self._locator1)
        # опущена проверка что element1 хороший
        element2 = element1.find_element_by_xpath(self._locator2)
        if element2.get_attribute(self._attribute) == self._attribute_value:
            return element2
        else:
            return None

driver = webdriver.Firefox()
driver.get('http://www.ubuntu.com/')
try:
    element = WebDriverWait(driver, 10).until(
        waittest('//*[@id="navigation"]/div/div/div','a[@href="/"]', 'class', 'p-navigation__link')
    )
    if element != None:
        print element.get_attribute('innerHTML')
except TimeoutException:
     pass

driver.close()
driver.quit()


напечатает лого убунту (svg). ЕМНИП в джаве та же проблема с сигнатурой
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы