Как щелкнуть элемент, видимый после зависания с помощью selenium?

Я хочу, чтобы нажать кнопку, которая видна после зависания. Ее HTML-код:

<span class="info"></span>

я использовал этот код:

import selenium.webdriver as webdriver
from selenium.webdriver.common.action_chains import ActionChains

url = "http://example.com"

driver = webdriver.Firefox()
driver.get(url)
element = driver.find_element_by_class_name("info")
hov = ActionChains(driver).move_to_element(element)
hov.perform()
element.click()

это не работает. Я получил ошибку, связанную с последней строкой кода element.click():

selenium.common.exceptions.ElementNotVisibleException: Message: \
u'Element is not currently visible and so may not be interacted with' 

любые предложения, пожалуйста?

1 ответов


Я уверен, что вы должны ждать элемента, пока он не станет видимым.

три варианта:

  • вызов time.sleep(n)
  • использовать WebDriverWait как это предложил здесь и здесь

Я бы выбрал второй вариант.

UPD:

на этом конкретном сайте зависание через selenium не работало вообще, поэтому единственным вариантом было нажать на кнопку с помощью JS via execute_script:

driver.execute_script('$("span.info").click();')

надеюсь, что это поможет.