硒生成错误“元素不可交互”

时间:2018-10-17 16:53:57

标签: python selenium selenium-webdriver selenium-chromedriver

enter image description here

我正在尝试使用Selenium单击上面突出显示的按钮。我可以通过以下方式定位元素:

 
download_button_path = "//button[@class='btn-primary']"
download_button = driver.find_element_by_xpath(download_button_path)

但是,当我尝试执行

download_button.click()

我收到错误消息:

ElementNotVisibleException: Message: element not interactable
  (Session info: chrome=70.0.3538.67)
  (Driver info: chromedriver=2.42.591059 (a3d9684d10d61aa0c45f6723b327283be1ebaad8),platform=Mac OS X 10.11.6 x86_64)

似乎该按钮对硒不可见,即使在手动执行单击时我也能看到它。

我还试图将鼠标悬停在该按钮上,然后单击,以及向该按钮发送Enter / Return键,但是没有任何作用。

任何见识都会受到赞赏。

3 个答案:

答案 0 :(得分:0)

在HTML中,我看到btn-primary存在于引导模式弹出窗口中。因此,在模式弹出窗口之后可能还有另一个btn-primary。 xpath会找到无法交互的模态后面的元素。

btn-primary类是引导程序中的通用类,将在所有brimary按钮中使用。尝试使用唯一的定位器,将模态元素作为定位器中的父级元素

download_button_path = "//[@class='lmn-edititem-modal']/../[@class=''btn-primary']"
wait = WebDriverWait(driver, 10)
download_button = wait.until(EC.visibility_of_element_located((By.XPATH, download_button_path)))
download_button .click()

我们也可以使用CSS选择器

尝试一下
driver.find_elements_by_css_selector(".lmn-edititem-modal .btn-primary") 

答案 1 :(得分:0)

对我来说,仅通过其父级扩展相对Xpath即可。

button = driver.find_element_by_xpath("//button[@data-value='0']")
button.click()
#this did not work

button = driver.find_element_by_xpath("//section[2]/button[@data-value='0']")
button.click()
#this worked well

答案 2 :(得分:0)

您是否尝试将鼠标悬停在按钮上并然后单击?

尝试以下操作:

button_to_click = driver.find_element_by_xpath('button_to_click's xpath')
hover = ActionChains(driver).move_to_element(button_to_click)
hover.perform()
button_to_click.click()

希望这会有所帮助。