关于Java中Selenium并行测试性能的问题
我在做一个网页抓取项目,我们面临旧的java脚本渲染问题。 目前,我们使用SeleniumWebDriver执行对需要呈现JS的站点的请求。 有了Jsoup(不能在网站上执行java脚本),一切都能以超高速运行,但当涉及到Selenium请求时,我认为我只是做错了。。下面是我的问题: 1.)如果我在java脚本执行后只需要响应html字符串(不点击元素等),那么首先selenium是不是有点过头了?我也试过了,但不知怎么的,它没有像硒一样正常工作。有时执行JS脚本,有时不执行。是否有更快/更合适但仍然可靠的产品?(PhantomJS似乎不受欢迎) 2)我做错了吗? 简而言之,我目前运行并行“测试”的方式:关于Java中Selenium并行测试性能的问题,java,selenium,selenium-webdriver,web-scraping,selenium-grid,Java,Selenium,Selenium Webdriver,Web Scraping,Selenium Grid,我在做一个网页抓取项目,我们面临旧的java脚本渲染问题。 目前,我们使用SeleniumWebDriver执行对需要呈现JS的站点的请求。 有了Jsoup(不能在网站上执行java脚本),一切都能以超高速运行,但当涉及到Selenium请求时,我认为我只是做错了。。下面是我的问题: 1.)如果我在java脚本执行后只需要响应html字符串(不点击元素等),那么首先selenium是不是有点过头了?我也试过了,但不知怎么的,它没有像硒一样正常工作。有时执行JS脚本,有时不执行。是否有更快/更合适
public void killAllChromeProcesses(){
try {
Thread.sleep(1000);
log.info("Killing all chrome processes..");
Process proc = Runtime.getRuntime().exec("killall chrome");
proc.waitFor();
log.info("..all chrome processes killed successfully!");
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
因为我意识到,即使在执行selenium时(硬超时30秒)
。。经过数小时的清理,当我查看我的系统进程时,仍然有未关闭/失效的chrome进程。(我猜在实例化Chrome本身时也会发生错误,因为我使用的是spring boot,所以这些错误会转化为运行时异常,但我还无法识别这些异常……不过这只是一个猜测。)
我读过一篇关于“Selenium Grid”的文章,目前正在考虑切换到使用这种架构。但基本上,这不是一件事+大量的技术堆栈/开销吗?
我需要一些一般性的建议和意见
谢谢你做的一切!
致以最良好的祝愿
driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
try {
driver.get(link);
} catch (Exception e){
log.error("Selenium error for {} .",link);
}finally{
if (driver != null) {
driver.close();
driver.quit();
}
}