Chrome 浏览器无头问题:没有这样的元素:无法在 chrome://downloads/ 找到元素 [重复]
Posted
技术标签:
【中文标题】Chrome 浏览器无头问题:没有这样的元素:无法在 chrome://downloads/ 找到元素 [重复]【英文标题】:Chrome Browser Headless problem : no such element: Unable to locate element at chrome://downloads/ [duplicate] 【发布时间】:2021-09-28 14:21:16 【问题描述】:由于某些情况,我需要访问 chrome://downloads/ 通过无头模式,但我得到了如下所示的错误:
org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: "method":"css selector","selector":"#useragent"
(Session info: headless chrome=91.0.4472.124)
在尝试搜索并尝试了很多时间后,但失败了 我为 chrome 添加了很多选项,如下所示:
ChromeOptions options = new ChromeOptions()
options.addArguments('--headless', '--start-maximized', '--window-size=1366,768', 'disable-blink-features=AutomationControlled',
'privileged', '--test-type', '--disable-gpu', '--no-first-run', '--no-default-browser-check', '--ignore-certificate-errors',
'--disable-extensions', '--proxy-bypass-list=*', '--disable-dev-shm-usage', '--no-sandbox', '--lang=en_US', '--allow-running-insecure-content')
options.addArguments('user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (Khtml, like Gecko) Chrome/91.0.4472.164 Safari/537.36')
options.setExperimentalOption('useAutomationExtension', false)
options.setExperimentalOption('excludeSwitches', ['enable-automation'])
options.addArguments('--proxy-server=\'direct://\'')
System.setProperty('webdriver.chrome.driver', ((RunConfiguration.getProjectDir() + '\\Data Files\\builds\\chromedriver_') +
GlobalVariable.chromeDriverVersion) + '.exe')
WebDriver driver = new ChromeDriver(options)
driver.navigate().to('chrome://version/')
WebElement userAgent = driver.findElement(By.cssSelector('#useragent'))
String txtUserAgent = userAgent.getText()
println(txtUserAgent)
但运气不好
所以任何人都可以帮助解决这个问题,非常感谢! PS:普通模式下可以正常使用。
【问题讨论】:
【参考方案1】:Chrome://downloads/
中的几乎所有内容都在 Shadow-root 下。您不能直接访问它们。
此外,您会看到 DOM 中有很多嵌套的阴影元素。
我在这里here 找到了一个关于如何访问阴影元素的非常好的示例。
def expand_shadow_element(element):
shadow_root = driver.execute_script('return arguments[0].shadowRoot', element)
return shadow_root
【讨论】:
是的,我已经通过 shadow dom 获取了元素,它在正常模式下工作,但无头模式不起作用,更好的例子,在 chrome://version/ 没有阴影时dom在这里,它也不能在无头模式下工作,谢谢! 你能显示一些代码吗?您共享的代码基本上是驱动程序的配置。 对不起,我怎样才能发表长评论:( 看起来像无头模式的一些问题,我什至无法打印print(driver.title)
,而没有无头模式,它可以工作。
更奇怪的是,我试过这个print(len(driver.find_elements(By.ID, "useragent")))
,它正在打印'0'来解释 nosuch 元素异常,但我不确定它什么时候不能使用无头模式,理想情况下应该。可能是一个错误以上是关于Chrome 浏览器无头问题:没有这样的元素:无法在 chrome://downloads/ 找到元素 [重复]的主要内容,如果未能解决你的问题,请参考以下文章
Nightwatch测试在Headless chrome模式下找不到元素
Python-Selenium:Chrome 无头设置不适用于“WebDriverWait”