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

时间:2015-11-10 14:33:40

标签: java selenium

我是编码的新手,在使用Java自动化Selenium时我遇到了以下问题:

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

查找唯一字符串的代码:

//Get expense report number
    String filename = strng;
    String ExpenseReportNumber = StringUtils.substringBefore(filename, " submitted"); // returns Expense Report #XXXX

现在我需要创建一个循环,在该循环中网站会一直刷新,直到它对字符串变量进行命中。当它找到字符串变量I然后可以选择收件箱中的顶部元素并继续我的测试。

有人可以帮助我解决这个问题,或者就如何创建相同的结果给出建议,然后采用更好的方法?非常感谢!

3 个答案:

答案 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');
?>