2011-09-08 19 views
1

即时通讯使用Selenium的HtmlUnitDriver有问题。Selenium HtmlUnit freeze随机加载一个网页

我使用Selenium 2.5版本。

测试非常简单,通常它可以正常工作,但有时候驱动程序只是停下来等待页面加载。

我的代码是这样的:

初始化...

private WebDriver driver; 
    driver = new HtmlUnitDriver(BrowserVersion.FIREFOX_3_6);((HtmlUnitDriver) driver).setJavascriptEnabled(true); 
     //driver = new FirefoxDriver(); 
     driver.manage().timeouts().implicitlyWait(0, TimeUnit.MILLISECONDS); 
     driver.manage().timeouts().setScriptTimeout(0, TimeUnit.MILLISECONDS); 

,然后很多块像这样的:

new Actions(driver).moveToElement(driver.findElement(By.linkText("Someting"))).perform(); 
     driver.findElement(By.linkText("something else")).click(); 
     driver.findElement(By.name("something")).sendKeys("8"); 
     driver.findElement(By.xpath("//img[@title='something']")).click(); 

各集团公司()之后,它加载一个新的页面。

我通常结束整个测试正确,我试图抓住所有的块,所以网络不是问题。

的webdriver的是忽略了超时(我尝试了很多diferent超时和问题依然存在),我不能从另一个线程invoquing停止驾驶“退出()”或“关闭()”

我搜索到处都是,但我找不到解决方案。

¿任何人都可以帮到我吗?

在此先感谢。

回答

2

我解决了它,如果任何人有同样的问题,我发布我的解决方案。

我可是从另一个线程按下ESC键(主要是忙等待......)

((HtmlUnitDriver) test.getDriver()).getKeyboard().pressKey(Keys.ESCAPE); 

,然后我用杀死浏览器,然后重新启动测试

test.getDriver().quit(); restart();//create a new test instance 
0

我以前遇到过这种行为。

我会先更新到2.9,然后再试一次

然后,我会检查我打的页面,因为如果他们有框架或iFrame他们得到下载过,如果你不控制自己的任何内容可能发生

看看这个link,因为它可能有你正在寻找的解决方案。

希望这会有所帮助。

+0

感谢您的答复,即时通讯使用HtmlUnit 2.9的Selenium 2.5。 我读了这个问题,是的,页面有框架。但我想加载全部:s 现在即时尝试从其他线程(主要是忙等待...)按下esc ((HtmlUnitDriver)test.getDriver())。getKeyboard()。pressKey(Keys。逃逸); 然后我杀了浏览器并重新启动测试 test.getDriver()。quit(); restart(); //创建一个新的测试实例 它似乎工作,但即时通讯等待最后一次真正的测试。 再次感谢 – Anonimo