当前位置: 首页 > 知识库问答 >
问题:

Java中的Selenium在使用无头Chrome时找不到元素

徐麒
2023-03-14
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--headless");
ChromeDriver was started successfully.
2020-08-27 22:41:46.625  INFO 20344 --- [ null to remote] o.o.selenium.remote.ProtocolHandshake    : Detected dialect: W3C
Exception in thread "Thread-8" Exception in thread "Thread-10" org.openqa.selenium.TimeoutException: Expected condition failed: waiting for presence of element located by: By.cssSelector: [data-id='current-price'] (tried for 5 second(s) with 500 milliseconds interval)
    at org.openqa.selenium.support.ui.WebDriverWait.timeoutException(WebDriverWait.java:95)
    at org.openqa.selenium.support.ui.FluentWait.until(FluentWait.java:272)
    at magharmi.asos.pricechecker.controller.PriceController$1.run(PriceController.java:52)
Caused by: org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"css selector","selector":"[data-id='current-price']"}
  (Session info: headless chrome=85.0.4183.83)
For documentation on this error, please visit: https://www.seleniumhq.org/exceptions/no_such_element.html
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'DESKTOP-MMDJR4G', ip: '192.168.178.45', os.name: 'Windows 10', os.arch: 'amd64', os.version: '10.0', java.version: '13.0.1'
Driver info: org.openqa.selenium.chrome.ChromeDriver

共有1个答案

经博延
2023-03-14

在使用无头模式时,您需要:

>

  • 最大化浏览窗口

    ChromeOptions options = new ChromeOptions();
    options.addArguments("--window-size=1400,600");
    

    不是presenceofelementlocited(),而是为visibilityofelementlocited()诱导WebDriverWait,如下所示:

    WebElement element = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("[data-id='current-price']")));
    

  •  类似资料:
    • 我刚开始学习Selenium,需要使用云中的jenkins机器验证登录网页,该机器没有GUI。我成功地在有UI的系统上运行了脚本。然而,当我将脚本修改为运行headless时,它无法表示无法定位元素。我的脚本如下: 当不使用chrome_options时,python脚本在我的系统上运行良好。但是在将它们添加到无头模式下运行时,它会失败,输出如下: 由于我对Selenium有大约一天的学习时间,我

    • 问题内容: 我在python中将selenium与chromedriver一起使用。 我的问题是selenium导致我尝试访问chrome下载页面(chrome:// downloads)上的元素时出现错误。例如,我尝试获取文件URL“ http://file.jpg ”。 但是当我尝试通过其ID获取元素时,出现了异常。 码: 例外: 通过javascript使用也不适合我。在浏览器中可以看到元素

    • 我正在尝试以下元素: 以下是Java代码: 它找不到元素。请帮忙。谢谢。

    • 单击应用程序中的菜单时,它会自动在新选项卡中打开该页面,然后在新选项卡中执行操作 切换到新窗口后无法找到元素 如何单击新打开的选项卡中的元素? 这是salesforce应用程序

    • 我正在用chromedriver运行selenium,并且它都运行得很好。最近我试着同时使用10个chromedrivers,这会占用所有可用的内存,所以我试着用ChromeOptions中的headless选项来解决这个问题。 尝试了以下选项: 试图在类似的帖子中找到一些信息,但找不到一个有效的解决方案。谢谢你。

    • 我不能在selenium中找到使用"id"的元素,因为id在每个执行会话中都是随机变化的,所以我不会在下一次执行中得到相同的id。因为没有其他唯一的属性来标识元素。 代码示例