我正在尝试使用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秒。
有没有人遇到过这个问题?或者任何人都可以给我任何理由吗?我设置错了吗?
此外,如果您需要更多详情,请与我们联系。
答案 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并不能在我的情况下带来性能优势,但运行测试无头。我可以使用没有图形桌面的机器,并为一些额外的线程节省计算能力。
答案 2 :(得分:0)
网页最慢的方面是下载html,JavaScript,css,图像等并发出AJAX请求。
对于任何说Headless更快的人,无头如何解决这些问题?