使用Selenium,PhantomJS比ChromeDriver慢

时间:2015-04-03 10:33:37

标签: java selenium-webdriver webdriver phantomjs ghostdriver

我正在尝试使用PhantomJS 2.0 / GhostDriver而不是ChromeDriver,因为我已经阅读过,我可以加快我的UI测试。 这是我正在运行的测试代码,作为Junit测试的一部分:

@Override
public void runTestCase() throws Exception {
    long startTime = System.currentTimeMillis();
    // log in as admin
    Login.loginAs("admin", "password");
    System.out.println(System.currentTimeMillis() - startTime);
}

loginAs函数填写用户名和密码的文本字段,然后单击提交按钮,最后移动到新返回页面的主页部分。

现在,我使用Phantomjs和ChromeDriver作为Selenium in Java(v2.45)的驱动程序进行了一次这个简单的测试。 它们初始化如下:

  • ChromeDriver

    System.setProperty("webdriver.chrome.logfile", workingDirectory + "\\chromedriver.log");
    service = new ChromeDriverService.Builder().usingDriverExecutable(new File(workingDirectory + "\\chromedriver.exe")).build(); 
    capabilities = DesiredCapabilities.chrome();
    
    options = new ChromeOptions();
    options.addArguments("--allow-file-access-from-files");
    options.addArguments("--verbose");
    capabilities.setVersion("");
    capabilities.setCapability(ChromeOptions.CAPABILITY, options);
    driver = new ChromeDriver(service, capabilities);
    
  • PhantomJS

    System.setProperty("phantomjs.binary.path", workingDirectory + "\\phantomjs.exe");
    cliArgsCap = new ArrayList<String>();
    capabilities = DesiredCapabilities.phantomjs();
    cliArgsCap.add("--web-security=false");
    cliArgsCap.add("--ssl-protocol=any");
    cliArgsCap.add("--ignore-ssl-errors=true");
    cliArgsCap.add("--webdriver-loglevel=INFO");
    cliArgsCap.add("--load-images=false");
    
    capabilities.setCapability(CapabilityType.SUPPORTS_FINDING_BY_CSS, true);
    capabilities.setCapability(CapabilityType.TAKES_SCREENSHOT, true);
    capabilities.setCapability(PhantomJSDriverService.PHANTOMJS_CLI_ARGS, cliArgsCap);
    driver = new PhantomJSDriver(capabilities);
    

我在64位Windows 7机器上运行测试。所以,看看测试所花费的时间,我总是注意到ChromeDriver比PhantomJS更快。总是。例如,如果使用ChromeDriver进行测试大约需要3-4秒,那么使用PhantomJS测试大约需要5-6秒。

有没有人遇到过这个问题?或者任何人都可以给我任何理由吗?我设置错了吗?

此外,如果您需要更多详情,请与我们联系。

3 个答案:

答案 0 :(得分:4)

我发现这个设置使用了大量内存似乎在不断增长:

cliArgsCap.add("--load-images=false");

但是当我使用此设置时,内存使用率是稳定的:

cliArgsCap.add("--load-images=true");

答案 1 :(得分:1)

&#34; PhantomJS是一个无头的WebKit脚本,带有JavaScript API&#34;正如它在项目主页上所解释的那样。 谷歌从WebKit拆分创建Blink以在Chrome中使用它。 他们之间的主要区别是什么 - 不幸的是我不是这里的专家。

我在Chrome和PhantomJS上运行了一个非常长的场景,令我惊讶的是差异非常大:

  • PhantomJS - 583.251 s
  • Chrome - 448.384 s

使用PhantomJS并不能在我的情况下带来性能优势,但运行测试无头。我可以使用没有图形桌面的机器,并为一些额外的线程节省计算能力。

答案 2 :(得分:0)

网页最慢的方面是下载html,JavaScript,css,图像等并发出AJAX请求。

对于任何说Headless更快的人,无头如何解决这些问题?