Нажатие кнопки работает только при добавлении time.sleep для селена python - PullRequest
0 голосов
/ 13 июля 2020
Свойство

click() в python(selenium) работает только при добавлении time.sleep().
Главный скрипт уже имеет неявное wait, указанное в начале.
Кто-нибудь, пожалуйста, поделитесь, почему это может происходить.

Ниже приведен код python, который я написал.

time.sleep(10)
driver.find_element(By.ID, 'tab-all').click()

Ответы [ 3 ]

1 голос
/ 13 июля 2020

time.sleep() - плохая практика. Это происходит потому, что селен пытается нажать кнопку до того, как она станет видимой. Чтобы нажать кнопку сразу после того, как она была обнаружена, используйте этот код:

from selenium.webdriver.support import expected_conditions as EC

myElem = WebDriverWait(browser,delay).until(EC.presence_of_element_located((By.ID, 'tab-all')))
myElem.click()

Если приведенный выше код вам не очень понятен, этот наверняка вам поможет.

0 голосов
/ 16 августа 2020

Теперь это решено .... Я понял, что хотя элемент был виден, но он не был полностью загружен ... Потребовалось некоторое время для полной загрузки ... Раньше он использовался для примера частичной загрузки как «Все (11)», а затем полная загрузка «Все (123434)», поэтому я не смог щелкнуть по нему .... Теперь я жду и проверяю, был ли текст изменен по сравнению с начальной загрузкой, а затем нажимаю на это.

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

Попробуйте следующее:

from selenium import webdriver
webdriver.support.ui.WebDriverWait(driver, 10).until(lambda driver:driver.find_element(By.ID, 'tab-all').click())
...