无法找到元素:python + selennium

时间:2019-12-30 09:15:38

标签: python selenium xpath webdriver

我试图单击图中所示的下拉列表

enter image description here

这是我尝试过的

select = browser.find_element_by_xpath("//div[@class='chosen-container chosen-container-single']//a[@class='chosen-single chosen-single-with-deselect chosen-default']//input[@class='chosen-search-input']")
select.click()

但是它给了我这个错误

  

NoSuchElementException:消息:无法找到元素:   // div [@ class ='chosen-container   selected-container-single'] // a [@ class ='chosen-single   选择与取消选择   selected-default'] // input [@ class ='chosen-search-input']

我尝试了Sameer提供的解决方案,但现在它给了我这个错误

  

ElementClickInterceptedException:消息:元素不是   可点击(228,398),因为另一个元素遮住了它

2 个答案:

答案 0 :(得分:1)

由于下拉菜单包含唯一文本,因此可以在xpath中使用该文本来查找元素。

尝试使用此更新的xpath
您的xpath应该像:

select = browser.find_element_by_xpath("//div[@id='textfilter_scopes_chosen']")
select.click()

通过更好的方法更新答案以获取元素

由于该元素具有唯一的ID,因此您应该使用该ID,因为id比xpath更快。
您可以使用以下ID:

select = browser.find_element_by_id("textfilter_scopes_chosen")
select.click()

答案 1 :(得分:1)

为了单击dropdown元素,请诱导WebDriverWait()和element_to_be_clickable()并跟随XPATH选项。

WebDriverWait(driver,10).until(EC.element_to_be_clickable((By.XPATH,"//div[@class='chosen-container chosen-container-single']//a[.//span[text()='Please select a scope']]"))).click()

您需要导入以下库

from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By