Python -Selenium: выбор объекта по xpath работает ~ 80% времени, другие не работают - PullRequest
0 голосов
/ 14 июля 2020

У меня есть программа с несколькими операторами find_element / click, и большинство из них работают, но это единственная проблема:

wait.until(lambda driver: browser.find_element_by_xpath('/html/body/table[3]/tbody/tr/td/table/tbody/tr/td[1]/table/tbody/tr/td[1]/table[2]/tbody/tr[2]/td'))
print('Accessing Virtual Warehouse')
VirtWhse = browser.find_element_by_xpath('/html/body/table[3]/tbody/tr/td/table/tbody/tr/td[1]/table/tbody/tr/td[1]/table[2]/tbody/tr[2]/td')
VirtWhse.click()

была добавлена ​​функция ожидания, потому что я подумал, что, возможно, она пыталась щелкнуть до элемент был загружен. кажется, не имеет значения, добавлен он или нет. он определяется как:

browser = webdriver.Chrome
wait = ui.WebDriverWait(browser,10)

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

проблема в том, что ссылка фактически нажимается только в 80% случаев. В остальное время моя функция wait.until истекает, и программа вылетает. (РЕДАКТИРОВАТЬ - функция ожидания, которая истекает по тайм-ауту, является следующей функцией ожидания после щелчка, а не той, которая указана в фрагменте кода.)

Может ли кто-нибудь объяснить, почему у меня проблема надежности с этим одним элементом?

1 Ответ

0 голосов
/ 14 июля 2020

Я добавил time.sleep (.5) перед VirtWhse.click () для @JackWu, и это, похоже, решает проблему.

Я думал, что моя первоначальная функция wait.until помешает этому, но я полагаю, что просто нужно немного времени между определением этого конкретного объекта и его выбором по какой-то причине.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...