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/ 找到元素 [重复]的主要内容,如果未能解决你的问题,请参考以下文章

无法使用无头 chrome 在网页上定位元素

Nightwatch测试在Headless chrome模式下找不到元素

爬虫使用无头浏览器

Python-Selenium:Chrome 无头设置不适用于“WebDriverWait”

CentOS7下python3 selenium3 使用Chrome的无头浏览器 截取网页全屏图片

如何通过无头 chrome 管理登录会话?