![](/img/trans.png)
[英]how to get and use the current url after the page is finiahed loading in android WebView
[英]selenium get current url after loading a page
我在Java中使用Selenium Webdriver。 我想在點擊“下一步”按鈕后從第1頁到第2頁獲取當前網址。這是我的代碼:
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頁的網址(預計它將成為第2頁的網址)。
就像你說的那樣,因為下一個按鈕的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);
}
第2頁是在新的標簽頁/窗口中? 如果是這樣,請使用以下代碼:
try {
String winHandleBefore = driver.getWindowHandle();
for(String winHandle : driver.getWindowHandles()){
driver.switchTo().window(winHandle);
String act = driver.getCurrentUrl();
}
}catch(Exception e){
System.out.println("fail");
}
我用硒編碼已經有一段時間了,但你的代碼看起來還不錯。 需要注意的一點是,如果找不到元素,但超時被傳遞,我認為代碼將繼續執行。 所以你可以這樣做:
boolean exists = driver.findElements(By.xpath("//*[@id='someID']")).size() != 0
上面的布爾返回了什么? 你確定selenium實際導航到預期的頁面嗎? (這可能聽起來像一個愚蠢的問題,但你實際上是在看頁面改變...硒可以遠程運行,你知道......)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.