gpt4 book ai didi

java - 尝试让 Selenium Chrome 驱动程序刷新页面直到找到项目,但所有方法都失败

转载 作者:行者123 更新时间:2023-12-01 09:49:01 29 4
gpt4 key购买 nike

我正在编写一个程序,该程序应该刷新网站,直到加载某个项目(我不是手动加载该项目,而是运行该网站的人),但我的方法似乎不起作用。我尝试将 FluentWait 与 driver.navigate().refresh() 一起使用(<-- 只会刷新 chromedriver 浏览器一次),但了解到在这种情况下这不是我需要的。以下是我的尝试。任何有关我如何解决此问题的指导都将受到赞赏!

WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement element = wait.until(ExpectedConditions.presenceOfElementLocated(By.linkText("Washed Twill Short")));
WebElement link = driver.findElement(By.linkText("Washed Twill Short"));
driver.get(link.getAttribute("href"));

Wait<WebDriver> wait = new FluentWait(driver).withTimeout(30, TimeUnit.SECONDS).pollingEvery(5, TimeUnit.SECONDS).ignoring(NoSuchElementException.class);

WebElement refresher = wait.until(new Function<WebDriver, WebElement>()
{
public WebElement apply(WebDriver driver)
{
driver.navigate().refresh();
return driver.findElement(By.linkText("Washed Twill Short"));
}
});

Boolean isPresent = driver.findElements(By.linkText("Washed Twill Short")).size() > 0;
while(!isPresent)
{
driver.get(driver.getCurrentUrl());
}

do{
driver.navigate().refresh();
}while(!driver.findElement(By.linkText("Washed Twil Short")).isDisplayed());

String productlink = driver.findElement(By.linkText("Washed Twill Short")).getAttribute("href");
driver.get(productlink);

最佳答案

你们已经很接近了。您可以使用 findElement() 方法,但该方法将抛出 NoSuchElementException ,从而破坏正常流程。在这种情况下,您必须用 try-catch 包围您的调用。

更好的方法(您也尝试过)是使用 findElements() 方法,如果没有匹配项,该方法会返回一个空列表。但是您放错了停止条件,并且仅在循环之前检查一次。将检查移至循环中,并得到如下内容:

String url = /* some url */
driver.get(url);
while(driver.findElements(By.linkText("Washed Twill Short")).isEmpty())
{
driver.get(url);
}

关于java - 尝试让 Selenium Chrome 驱动程序刷新页面直到找到项目,但所有方法都失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37740274/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com