首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用Selenium框架截图时出现"TypeError: rootNode is null“

使用Selenium框架截图时出现"TypeError: rootNode is null“
EN

Stack Overflow用户
提问于 2019-09-16 09:59:23
回答 2查看 298关注 0票数 1

为什么截图时会出现这个TypeError: rootNode is null错误?在HTML DOM结构中有没有开发人员应该修复的问题,或者是Selenium版本的问题?

截图时出现此错误:

代码语言:javascript
运行
复制
org.openqa.selenium.WebDriverException: TypeError: rootNode is null
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'linuxhost', ip: 'x.x.x.x', os.name: 'Linux', os.arch: 'amd64', os.version: '2.6.32-754.17.1.el6.x86_64', java.version: '1.8.0_202'
Driver info: org.openqa.selenium.firefox.FirefoxDriver
Capabilities {acceptInsecureCerts: true, browserName: firefox, browserVersion: 60.8.0, javascriptEnabled: true, moz:accessibilityChecks: false, moz:headless: false, moz:processID: 6651, moz:profile: /tmp/rust_mozprofile.LlBKoU..., moz:useNonSpecCompliantPointerOrigin: false, moz:webdriverClick: true, pageLoadStrategy: normal, platform: LINUX, platformName: LINUX, platformVersion: 2.6.32-754.17.1.el6.x86_64, rotatable: false, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}}
Session ID: 1afd06ed-4939-42c9-9d1d-51fa113dfe97
    at org.openqa.selenium.remote.http.W3CHttpResponseCodec.createException(W3CHttpResponseCodec.java:187)
    at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:122)
    at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:49)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158)
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:609)
    at org.openqa.selenium.remote.RemoteWebDriver.getScreenshotAs(RemoteWebDriver.java:295)

依赖项版本:

Firefox: Mozilla Firefox 60.8.0 geckodriver: 0.23.0 selenium: 3.141.59 geb-spock:3.0.1

EN

回答 2

Stack Overflow用户

发布于 2019-09-16 10:50:51

我试过了,它对我很管用。

v0.25.0

  • Webdriver: 3.141.59
  • Firefox : 69.0 (64位)
  • Gecko驱动程序

代码语言:javascript
运行
复制
FirefoxDriver fdriver;
System.setProperty("webdriver.gecko.driver", "/path/geckodriver");
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette", true);

FirefoxOptions foptions = new FirefoxOptions();
foptions.merge(capabilities);
fdriver = new FirefoxDriver(foptions);
fdriver.get("http://demo.guru99.com/selenium/guru99home/");

File src = ((TakesScreenshot) fdriver).getScreenshotAs(OutputType.FILE);
try {
    // now copy the screenshot to desired location using copyFile //method
    FileUtils.copyFile(src, new File("path/fchart.png"));
    fdriver.quit();
}
catch (IOException e) {
    System.out.println(e.getMessage());
}
票数 0
EN

Stack Overflow用户

发布于 2019-12-06 04:53:22

我发现了为什么会发生"TypeError: rootNode is null“错误。

如果test甚至在html页面源代码完全下载之前就尝试截图,则会发生此错误。

添加动态等待以等待页面完全加载确实修复了此问题。

代码语言:javascript
运行
复制
  waitFor {
         ((JavascriptExecutor)driver).executeScript("return document.readyState").equals("complete")
      }

takeScreenshot()
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57949563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档