Используя Python 2, Selenium используя Firefox , на этой странице я пытаюсь, чтобы драйвер нажал следующую кнопку (увеличительное стекло):
![enter image description here](https://i.stack.imgur.com/GHVbK.png)
<button id="search-btn" type="button" class="header__user-menu-item header__search-btn">
<span class="sr-only">Search</span>
<img src="/sites/default/themes/custom/smp_bootstrap/images/search.svg" class="header__user-menu-icon fa fa-search fa-fw" alt="Search">
</button>
Я использую следующий код для XPath элемента, x = '//*[@id="search-btn"]'
:
x = '//*[@id="search-btn"]'
try:
element = WebDriverWait(driver, 5).until(EC.element_to_be_clickable((By.XPATH, x)))
except:
print "Element not clickable"
else:
found_element = driver.find_element_by_xpath(x)
try:
found_element.click()
except:
raise
Общее исключение Selenium EC.element_to_be_clickable
не идентифицирует элемент, а также visibility_of_element_located
и presence_of_element_located
.
Странно, однако, что в некоторых случаях драйвер фактически мог идентифицировать элемент и затем выполнить driver.find_element_by_xpath(x)
, который, кажется, находит XPath и .click()
элемент. В этот момент все работает. На секунду я подумал, что сценарий должен был быстро выполнить операцию до загрузки страницы, но для загрузки страницы достаточно 5 секунд WebDriverWait
, и перед этим у меня есть дополнительный режим загрузки страницы.
Элемент, кажется, не находится в IFrame. Я уже прошел через кнопки «Принять условия» и т. Д.
Я использую последние версии Firefox (61.0), Selenium (3.13) и Geckodriver (0.21.0).
В чем здесь может быть проблема?