首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >刷新页面,直到元素出现- JAVA

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

Stack Overflow用户
提问于 2015-11-10 14:33:40
回答 3查看 3.5K关注 0票数 2

我刚开始编写代码,在使用Java自动使用Selenium时,我遇到了以下问题:

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

查找唯一字符串的代码:

代码语言:javascript
运行
复制
//Get expense report number
    String filename = strng;
    String ExpenseReportNumber = StringUtils.substringBefore(filename, " submitted"); // returns Expense Report #XXXX

现在,我需要创建一个循环,在这个循环中,站点一直保持刷新,直到字符串变量被击中为止。当它找到字符串变量时,我可以选择收件箱中的top元素并继续我的测试。

有人能在这个问题上帮助我吗?或者给我建议如何创造同样的结果,然后用一个更好的方法?非常感谢!

EN

回答 3

Stack Overflow用户

发布于 2015-11-10 15:45:49

代码语言:javascript
运行
复制
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
EN

Stack Overflow用户

发布于 2015-11-10 17:04:57

代码语言:javascript
运行
复制
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
票数 1
EN

Stack Overflow用户

发布于 2017-10-27 16:57:56

我是这样想出来的:

代码语言:javascript
运行
复制
do
{
    driver.refresh();
    driver.waitForPageToLoad();
    driver.wait(1000);
} while (driver.findElements(By.locator(element)).size() < 1);
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33632431

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档