刷新页面直到元素出现-JAVA-Selenium

刷新页面直到元素出现-JAVA-Selenium,java,selenium,Java,Selenium,我不熟悉编码,在使用Java自动化Selenium时遇到以下问题: 我正在测试SaaS解决方案,需要刷新页面,直到某个项目出现在我的收件箱中。我不能简单地使用findelement语句,因为该项仅在一段时间后出现,并且仅在页面刷新后才出现。此外,所有收件箱项目在标题中都有一个唯一的序列号。我已将此唯一数字另存为字符串变量,我想使用此字符串变量查看在刷新页面几次后收件箱项目是否出现 查找唯一字符串的代码: //Get expense report number String filenam

我不熟悉编码,在使用Java自动化Selenium时遇到以下问题:

我正在测试SaaS解决方案,需要刷新页面,直到某个项目出现在我的收件箱中。我不能简单地使用findelement语句,因为该项仅在一段时间后出现,并且仅在页面刷新后才出现。此外,所有收件箱项目在标题中都有一个唯一的序列号。我已将此唯一数字另存为字符串变量,我想使用此字符串变量查看在刷新页面几次后收件箱项目是否出现

查找唯一字符串的代码:

//Get expense report number
    String filename = strng;
    String ExpenseReportNumber = StringUtils.substringBefore(filename, " submitted"); // returns Expense Report #XXXX
现在,我需要创建一个循环,在这个循环中,站点不断刷新,直到找到字符串变量为止。当它找到字符串变量时,我就可以在收件箱中选择最上面的元素并继续我的测试

有没有人能帮我解决这个问题,或者给我一些建议,告诉我如何创造同样的结果,然后用更好的方法?非常感谢

Wait wait12=新的FluentWait(驱动程序)
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));
                              }
    });
.带超时(600,时间单位。秒) .轮询间隔(15,时间单位。秒) .忽略(NoSuchElementException.class); WebElement ToDoExpense=wait12.until(新函数(){ 公共WebElement应用(WebDriver){ driver.navigate().refresh(); 返回driver.findElement(By.partialLinkText(ExpenseReportNumber)); } });

我自己找到了解决方案

我是这样解决的:

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
do
{
    driver.refresh();
    driver.waitForPageToLoad();
    driver.wait(1000);
} while (driver.findElements(By.locator(element)).size() < 1);
do
{
driver.refresh();
waitForPageToLoad();
司机,等等(1000);
}while(driver.findElements(By.locator(element)).size()<1);

请确保在可能的情况下接受此答案,以便将问题标记为已回答。谢谢这会导致页面不断循环,或者出现StaleElementReferenceException,因此不能被视为答案。嗨,Shahzaib,谢谢你的反馈!你的代码更干净了,我现在正在使用它。谢谢