Как указать дочерний элемент в ожидаемом состоянии WebDriverWait? - PullRequest
0 голосов
/ 21 апреля 2020

Допустим, у вас есть элемент на веб-странице, найденный успешно

parent_element = driver.find_element_by_css_selector(some_css_selector)

Я хочу включить WebDriverWait, который ожидает, пока один из его дочерних элементов не станет кликабельным. Обычно вы делаете это с

WebDriverWait(driver,30).until(EC.element_to_be_clickable((By.CSS_SELECTOR,some_css_selector)))

, однако в моем случае я хочу, чтобы some_css_selector был дочерним элементом parent_element. Как я могу это сделать?

Редактировать: Например - я узнал, что я могу сделать это:

wait = WebDriverWait(driver, 30)
child_element = wait.until(lambda d:parent_element.find_element_by_css_selector('child_selector'))

, который, кажется, работает. Однако это просто ожидание, пока не появится этот дочерний элемент. Я хочу использовать ожидаемые условия (например, element_to_be_clickable).

Ответы [ 2 ]

2 голосов
/ 22 апреля 2020

Здесь вы пытаетесь пройти через локатор CSS_SELECTOR, поэтому вам нужно найти, используя отношения родитель-потомок:

  WebDriverWait(driver,30).until(EC.element_to_be_clickable(By.CSS_SELECTOR,//Parent-selector > child-Selector))

Я могу передать webelement в java с element_to_be_clickable, я не уверен, будет ли он работать в python или нет. Вы можете попробовать.

child_element= parent_element.find_element_by_css_selector('child_selector')
WebDriverWait(driver,30).until(EC.element_to_be_clickable(child-element))
0 голосов
/ 22 апреля 2020

Если вы хотите обрабатывать дочерний элемент в зависимости от присутствия родителя, вы можете использовать функцию одноуровневого элемента для извлечения одноуровневого элемента из родительского веб-элемента простыми словами. Как бороться с братом, используя селен

Также есть другой способ, которым вы можете использовать, если l oop, и проверять наличие дочерних элементов на основе присутствия вашего родительского элемента.

if parent:
    if child:
        print "do stuff"
    else:
        print "failed to locate child"
else:
     print "failed to locate parent"
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...