无法使用 python selenium 与此动态下拉列表交互
unable to interact with this dynamic drop down using python selenium
大家好,
我正在尝试使用 div 作为标签访问动态下拉列表,但我能够找到它但无法与之交互
因为它改变了它的样式类型,如下所示。
<div style ="display :none;"></div>"
至
<div style ="display :block;"></div>"
我无法点击这个,请看截图了解详情。
您必须单击元素才能访问此动态下拉列表的信息,
div
不是 HTML
中的可点击对象。如果它已分配一些 JavaScript
代码在您单击它时显示,那么您可能还需要 JavaScript
才能单击它
driver.execute_script("arguments[0].click()", item)
你可以用同样的方法改变style
driver.execute_script("arguments[0].style.display = 'block';", item)
在这个最小的工作示例中,我删除了此页面上的所有 img
。
from selenium import webdriver
url = '
driver = webdriver.Firefox()
driver.get(url)
all_items = driver.find_elements_by_xpath('//img')
for item in all_items:
print(item.text)
#driver.execute_script("arguments[0].click()", item)
driver.execute_script("arguments[0].style.display = 'none';", item)
解决方案 -> 实际上我们在这里寻找的元素是屏蔽元素,这意味着这个元素的实际 ID 是不同的,所以我偶然能够找到它(为此你已经通过 HTML 代码行按行找到它,安静的静态方式,但我就是这样做的)并将其放入代码中。
如果您知道更有效的解决屏蔽元素的方法,请发表评论。
此致,
阿努巴夫
大家好,
我正在尝试使用 div 作为标签访问动态下拉列表,但我能够找到它但无法与之交互 因为它改变了它的样式类型,如下所示。
<div style ="display :none;"></div>"
至
<div style ="display :block;"></div>"
我无法点击这个,请看截图了解详情。
您必须单击元素才能访问此动态下拉列表的信息,
div
不是 HTML
中的可点击对象。如果它已分配一些 JavaScript
代码在您单击它时显示,那么您可能还需要 JavaScript
才能单击它
driver.execute_script("arguments[0].click()", item)
你可以用同样的方法改变style
driver.execute_script("arguments[0].style.display = 'block';", item)
在这个最小的工作示例中,我删除了此页面上的所有 img
。
from selenium import webdriver
url = '
driver = webdriver.Firefox()
driver.get(url)
all_items = driver.find_elements_by_xpath('//img')
for item in all_items:
print(item.text)
#driver.execute_script("arguments[0].click()", item)
driver.execute_script("arguments[0].style.display = 'none';", item)
解决方案 -> 实际上我们在这里寻找的元素是屏蔽元素,这意味着这个元素的实际 ID 是不同的,所以我偶然能够找到它(为此你已经通过 HTML 代码行按行找到它,安静的静态方式,但我就是这样做的)并将其放入代码中。
如果您知道更有效的解决屏蔽元素的方法,请发表评论。
此致, 阿努巴夫