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

Java中的Selenium在使用headless Chrome时找不到元素,java,selenium,selenium-webdriver,web-scraping,webdriverwait,headless,Java,Selenium,Selenium Webdriver,Web Scraping,Webdriverwait,Headless,我想从基于JavaScript的网站上找到一些元素。我使用Java和Selenium。一切都很好,但当我想使用无头铬,然后硒无法找到元素 我在ChromeDriver中添加了以下选项: ChromeOptions chromeOptions = new ChromeOptions(); chromeOptions.addArguments("--headless"); 控制台: ChromeDriver was started successfully. 2020-08-2

我想从基于JavaScript的网站上找到一些元素。我使用Java和Selenium。一切都很好,但当我想使用无头铬,然后硒无法找到元素

我在ChromeDriver中添加了以下选项:

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
使用模式时,您需要:

  • 而不是
    元素定位()的存在
    归纳
    元素定位()的可见性
    ,如下所示:

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

显然,chrome不制造物体。添加更多的调试,n pike是否找到了任何东西…简单的顶级元素?如果没有创建chrome,selenium将找不到。请尝试firefix查看或查看更低版本的chrome?是的,顶级元素。我只是想从一家商店的产品网站上找到一个价格。价格加载稍晚,因此不会立即显示。
WebElement element = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.cssSelector("[data-id='current-price']")));