我正在尝试使用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键,但是没有任何作用。
任何见识都会受到赞赏。
答案 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()
希望这会有所帮助。