Kan*_*han 11 java selenium htmlunit
我一直在使用HTMLUnit.它很适合我的要求.但它似乎非常缓慢.例如:我使用HTMLUnit自动化了以下场景
Goto Google page
Enter some text
Click on the search button
Get the title of the results page
Click on the first result.
Run Code Online (Sandbox Code Playgroud)
代码:
long t1=System.currentTimeMillis();
Logger logger=Logger.getLogger("");
logger.setLevel(Level.OFF);
WebClient webClient=createWebClient();
WebRequest webReq=new WebRequest(new URL("http://google.lk"));
HtmlPage googleMainPage=webClient.getPage(webReq);
HtmlTextInput searchTextField=(HtmlTextInput) googleMainPage.getByXPath("//input[@name='q']").get(0);
HtmlButton searchButton=(HtmlButton) googleMainPage.getByXPath("//button[@name='btnK']").get(0);
searchTextField.type("Sri Lanka");
System.out.println("Text typed!");
HtmlPage googleResultsPage= searchButton.click();
System.out.println("Search button clicked!");
System.out.println("Title : " + googleResultsPage.getTitleText());
HtmlAnchor firstResultLink=(HtmlAnchor) googleResultsPage.getByXPath("//a[@class='l']").get(0);
HtmlPage firstResultPage=firstResultLink.click();
System.out.println("First result clicked!");
System.out.println("Title : " + firstResultPage.getTitleText());
//System.out.println(firstResultPage.asText());
long t2=System.currentTimeMillis();
long diff=t2-t1;
System.out.println("Time elapsed : " + milliSecondsToHrsMinutesAndSeconds(diff));
webClient.closeAllWindows();
Run Code Online (Sandbox Code Playgroud)
它的效果很好100%.但这需要3分41秒
我想执行缓慢的原因是验证页面上的每个元素.
我的问题是如何减少HTMLUnit的执行时间?有没有办法禁用网页上的验证.
提前致谢!
fst*_*ang 13
对于当前的htmlUnit 2.13,设置选项与maxmax提供的略有不同:
final WebClient webClient = new WebClient(BrowserVersion.CHROME);
webClient.getOptions().setCssEnabled(false);//if you don't need css
webClient.getOptions().setJavaScriptEnabled(false);//if you don't need js
HtmlPage page = webClient.getPage("http://XXX.xxx.xx");
...
Run Code Online (Sandbox Code Playgroud)
在我自己的测试中,这比默认选项快8倍.(请注意,这可能与网页有关)
小智 9
我根据我设定的选项在20秒或40秒内完成您的示例.由于我无法看到webClient初始化,我想也许这可能是问题所在.
这是我20多岁治疗的初始化:
WebClient client = new WebClient(BrowserVersion.FIREFOX_3_6);
client.setTimeout(60000);
client.setRedirectEnabled(true);
client.setJavaScriptEnabled(true);
client.setThrowExceptionOnFailingStatusCode(false);
client.setThrowExceptionOnScriptError(false);
client.setCssEnabled(false);
client.setUseInsecureSSL(true);
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
10316 次 |
最近记录: |