我是编码的新手,在使用Java自动化Selenium时我遇到了以下问题:
我正在测试SaaS解决方案,我需要刷新页面,直到我的收件箱中出现某个项目。我不能简单地使用findelement语句,因为该项目仅在一段时间后出现,并且仅在页面刷新后 。此外,所有收件箱项目在标题中都有唯一的序列号。这个唯一的数字我已保存为字符串变量,我想使用此字符串变量来查看刷新页面后是否出现了收件箱项目。
查找唯一字符串的代码:
//Get expense report number
String filename = strng;
String ExpenseReportNumber = StringUtils.substringBefore(filename, " submitted"); // returns Expense Report #XXXX
现在我需要创建一个循环,在该循环中网站会一直刷新,直到它对字符串变量进行命中。当它找到字符串变量I然后可以选择收件箱中的顶部元素并继续我的测试。
有人可以帮助我解决这个问题,或者就如何创建相同的结果给出建议,然后采用更好的方法?非常感谢!
答案 0 :(得分:1)
Wait<WebDriver> wait12 = new FluentWait<WebDriver>(driver)
.withTimeout(600, TimeUnit.SECONDS)
.pollingEvery(15, TimeUnit.SECONDS)
.ignoring(NoSuchElementException.class);
WebElement ToDoExpense = wait12.until(new Function<WebDriver, WebElement>() {
public WebElement apply(WebDriver driver) {
driver.navigate().refresh();
return driver.findElement(By.partialLinkText(ExpenseReportNumber));
}
});
我自己找到了解决方案
答案 1 :(得分:1)
public WebDriverWait wait = new WebDriverWait(driver, 10); //throws exception if element is not found within 10 seconds
driver.navigate().refresh();
wait.until(ExpectedConditions.presenceOfElementLocated(By.partialLinkText(ExpenseReportNumber)));
//continue your test
答案 2 :(得分:0)
我这样做了:
<?php
defined('DB_SERVER') ? null : define('DB_SERVER', 'localhost');
defined('DB_USER') ? null : define('DB_USER', 'root');
defined('DB_PASS') ? null : define('DB_PASS', 'root');
defined('DB_NAME') ? null : define('DB_NAME', 'cafe');
?>