selenium验证由AJAX填充的html表中的文本
我正在使用Selenium的FireFox WebDriver。我有一个通过AJAX加载的窗口,因此我的测试不一致 我可以在线程上延迟3秒,并且每次都能正常工作。我所做的就是检查是否有争吵selenium验证由AJAX填充的html表中的文本,selenium,Selenium,我正在使用Selenium的FireFox WebDriver。我有一个通过AJAX加载的窗口,因此我的测试不一致 我可以在线程上延迟3秒,并且每次都能正常工作。我所做的就是检查是否有争吵 最好的方法是什么?假设你的硒测试应该模拟一个人使用该网站,因此你所做的任何规避人类会做的事情(坐着等待)都可能导致错误的结果。在这种情况下,我认为在AJAX加载(或失败)时添加延迟并报告没有问题。假设您的Selenium测试应该模拟一个人使用该站点,因此您所做的任何规避人类会做的事情(静坐等待)都可能导致错误
最好的方法是什么?假设你的硒测试应该模拟一个人使用该网站,因此你所做的任何规避人类会做的事情(坐着等待)都可能导致错误的结果。在这种情况下,我认为在AJAX加载(或失败)时添加延迟并报告没有问题。假设您的Selenium测试应该模拟一个人使用该站点,因此您所做的任何规避人类会做的事情(静坐等待)都可能导致错误的结果。在这种情况下,我认为在AJAX加载(或失败)时添加延迟,然后报告这一点没有问题。最好的方法(IMHO)是使用fluent wait。 无论如何,您有所需元素的定位器(XPath或css选择器等),并将定位器传递给fluentWait函数,您将获得所需的web元素进行交互。
fluentWait
功能代码如下:
public WebElement fluentWait(final By locator){
Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
.withTimeout(30, TimeUnit.SECONDS)
.pollingEvery(5, TimeUnit.SECONDS)
.ignoring(NoSuchElementException.class);
WebElement foo = wait.until(
new Function<WebDriver, WebElement>() {
public WebElement apply(WebDriver driver) {
return driver.findElement(locator);
}
}
);
return foo; } ;
您将传递到函数:
WebElement firstRow= fluentWait(By.cssSelector(cssLocator));
通过这种方式,您可以获得表的第一行
希望你现在明白了)最好的方法(IMHO)是使用fluent wait。
无论如何,您有所需元素的定位器(XPath或css选择器等),并将定位器传递给fluentWait函数,您将获得所需的web元素进行交互。
fluentWait
功能代码如下:
public WebElement fluentWait(final By locator){
Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
.withTimeout(30, TimeUnit.SECONDS)
.pollingEvery(5, TimeUnit.SECONDS)
.ignoring(NoSuchElementException.class);
WebElement foo = wait.until(
new Function<WebDriver, WebElement>() {
public WebElement apply(WebDriver driver) {
return driver.findElement(locator);
}
}
);
return foo; } ;
您将传递到函数:
WebElement firstRow= fluentWait(By.cssSelector(cssLocator));
通过这种方式,您可以获得表的第一行
希望你现在明白了)