是否存在无法通过Selenium自动化的页面?

时间:2018-07-27 07:55:31

标签: python selenium

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("chrome://settings")

advanced = driver.find_element_by_css_selector("#advancedToggle > span")
advanced.click()

上面的代码不起作用。要查看高级变量所指的位置,您可以在浏览器中粘贴“ chrome:// settings”(仅在使用chrome时有效),然后向下滚动到底部看到“高级”开关的位置。

该切换甚至有一个ID "advancedToggle",但我似乎无法通过任何方法(id,class,css,xpath)在此页面上找到任何内容。

  

是否有可能某些页面仅能抵抗自动化(如果   这是一个适当的术语)?如果是这样,有什么办法可以告诉哪些页面   无法自动启用?

我将最后一个问题放在方框引号中,因为该问题被标记为重复,但是示例出现在其他位置,但我认为该方框中没有该问题的答案。

1 个答案:

答案 0 :(得分:2)

您必须使用/deep/来传递shadow-root元素:

body /deep/ #advancedToggle > span

代码如下:

from selenium import webdriver

driver = webdriver.Chrome()
driver.get("chrome://settings")

advanced = driver.find_element_by_css_selector("body /deep/ #advancedToggle > span")
advanced.click()

阴影根元素看起来像这样:

img

您可以通过按F12然后找到Elements标签来找到它。然后在DOM中您将找到shadow-root