gpt4 book ai didi

java - selenium 在加载页面后获取当前 url

转载 作者:IT老高 更新时间:2023-10-28 20:22:59 29 4
gpt4 key购买 nike

我在 Java 中使用 Selenium Webdriver。单击“下一步”按钮以从第 1 页移动到第 2 页后,我想获取当前 url。这是我的代码:

    WebDriver driver = new FirefoxDriver();
String startURL = //a starting url;
String currentURL = null;
WebDriverWait wait = new WebDriverWait(driver, 10);

foo(driver,startURL);

/* go to next page */
if(driver.findElement(By.xpath("//*[@id='someID']")).isDisplayed()){
driver.findElement(By.xpath("//*[@id='someID']")).click();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//*[@id='someID']")));
currentURL = driver.getCurrentUrl();
System.out.println(currentURL);
}

在获取当前 url 之前,我有隐式和显式等待调用来等待页面完全加载。但是,它仍在打印第 1 页的 url(它应该是第 2 页的 url)。

最佳答案

就像你说的那样,因为下一个按钮的 xpath 在每个页面上都是相同的,所以它不起作用。它按编码工作,它确实等待元素显示,但由于它已经显示,因此隐式等待不适用,因为它根本不需要等待。您为什么不使用 url 更改的事实,因为从您的代码来看,当单击下一个按钮时,它似乎会更改。我做 C#,但我猜在 Java 中会是这样的:

WebDriver driver = new FirefoxDriver();
String startURL = //a starting url;
String currentURL = null;
WebDriverWait wait = new WebDriverWait(driver, 10);

foo(driver,startURL);

/* go to next page */
if(driver.findElement(By.xpath("//*[@id='someID']")).isDisplayed()){
String previousURL = driver.getCurrentUrl();
driver.findElement(By.xpath("//*[@id='someID']")).click();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);

ExpectedCondition e = new ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver d) {
return (d.getCurrentUrl() != previousURL);
}
};

wait.until(e);
currentURL = driver.getCurrentUrl();
System.out.println(currentURL);
}

关于java - selenium 在加载页面后获取当前 url,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16242340/

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