【问题标题】:Htmlunit driver has trouble with JavascriptHtmlunit 驱动程序在使用 Javascript 时遇到问题
【发布时间】:2017-08-22 18:02:36
【问题描述】:

我用 FirefoxDriver 启动的 java 编写了一个 Selenium 测试,它在 Firefox 浏览器中运行良好。

然后我将 FirefoxDriver 替换为 HtmlunitDriver,如下所示:

driver = new FirefoxDriver();

driver = new HtmlUnitDriver(true);

然后我得到了这个错误:

它缺少';'指令前 (http://local.project/bundles/app/js/socket.js#1)

这是 socket.js 文件:

class SocketHandler {
    constructor(url) {
        this.url = url;
        this.session = null;
    }

    ....
}

我怀疑它无法识别类声明。知道如何纠正吗?

【问题讨论】:

  • 为什么要使用 HtmlUnitDriver?
  • @TarunLalwani 因为它使用的资源比 firefox 少
  • 那么最好使用 PhantomJS。 HtmlUnitDriver 不是用于测试的最佳兼容驱动程序。
  • 它与 Selenium 兼容吗?经过一番搜索后,它似乎是。我要测试一下谢谢。

标签: javascript selenium selenium-webdriver htmlunit htmlunit-driver


【解决方案1】:

您甚至不需要使用 PhantomJs。由于现在 PhantomJs 没有那么多维护。您可以在无头模式下使用 chromedriver。

您只需要添加如下无头选项:-

chromeOptions.addArguments("--headless");

请在下面找到完整的代码:

System.setProperty("webdriver.chrome.driver","D:\\Workspace\\JmeterWebdriverProject\\src\\lib\\chromedriver.exe");
ChromeOptions chromeOptions = new ChromeOptions();
chromeOptions.addArguments("--headless");
chromeOptions.addArguments("--start-maximized");
WebDriver driver = new ChromeDriver(chromeOptions);
driver.get("https://google.com");

如果您仍然想使用 phantomjs。然后首先从以下位置下载 phantomjs 二进制文件:-

http://phantomjs.org/download.html

现在使用下面的代码:-

System.setProperty("phantomjs.binary.path","D:\\Workspace\\JmeterWebdriverProject\\src\\lib\\phantomjs\\phantomjs.exe");
DesiredCapabilities capabilities = null;
ArrayList<String> cliArgsCap = new ArrayList<String>();
capabilities = DesiredCapabilities.phantomjs();
cliArgsCap.add("--web-security=false");
cliArgsCap.add("--ssl-protocol=any");
cliArgsCap.add("--ignore-ssl-errors=true");
capabilities.setCapability("takesScreenshot", true);
capabilities.setJavascriptEnabled(true);
capabilities.setCapability(
PhantomJSDriverService.PHANTOMJS_CLI_ARGS, cliArgsCap);
capabilities.setCapability(
PhantomJSDriverService.PHANTOMJS_GHOSTDRIVER_CLI_ARGS,new String[] { "--logLevel=2" });
driver = new PhantomJSDriver(capabilities);
driver.get("https://www.google.co.in/");

希望对你有帮助:)

【讨论】:

  • 谢谢,这真的很有帮助。我正在使用 Selenium 进行一些测试加载,即使在无头模式下,在我的计算机开始“滞后”之前,我也不能放置超过 50 个浏览器。你知道是否有更多的 chromeOptions 可以用来“减轻”浏览器?或者是否值得迁移到 PhantomJS?我需要同时访问 80 个浏览器。
  • 是的,您可以尝试使用 phantomjs .. 您也可以使用 selenium 网格概念,您的主机将向从属机器发送指令.. 所以使用网格您需要 2 台机器,每台机器将运行 40 个实例跨度>
猜你喜欢
  • 2016-11-09
  • 2017-09-11
  • 1970-01-01
  • 1970-01-01
  • 2013-01-29
  • 1970-01-01
  • 1970-01-01
  • 2013-01-16
  • 1970-01-01
相关资源
最近更新 更多