2012-04-11 27 views
5

我想使用selenium webdriver(java)测试一个站点,但该站点包含ajax,HTMLUnit没有看到ajax内容。使用Ajax的WebDriver HTMLUnit问题

是否有解决方法?

实施例:

WebDriver driver = new HtmlUnitDriver(BrowserVersion.FIREFOX_3_6); 
//login into your account 
this.login(driver); 
//click on edit Profile Link into an ajax-loaded tab 
driver.findElement(By.id("editProfile")).click(); 
//Result: org.openqa.selenium.NoSuchElementException 
+0

从我个人的经验来看,HTMLUnitDriver javascript支持是相当糟糕的,而且仿真更糟。我停止使用它进行回归测试,因为它引入了比它能够检测到的更多的错误:( – 2012-04-11 18:14:20

回答

5

使用与元件用Ajax响应之后必须出现相互作用之前等待条件。

WebDriverWait wait = new WebDriverWait(webDriver, 5); 
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("xpath_to_element"))); 

这使得webDriver在5秒内等待你的元素。这个问题之前曾被问到过。

+0

这个问题并没有集中在WebDriver本身上,它集中在带有ajax的HtmlUnitDriver上... – Krzys 2012-04-11 12:22:24

+2

WebDriver是一个接口,HtmlUnitDriver等等它的工作方式也一样,不用担心。 – 2012-04-11 15:33:06