Używam Selenium Webdriver w Javie. Chcę uzyskać bieżący URL po kliknięciu przycisku „Dalej”, aby przejść od strony 1 do strony 2. Oto kod mam:selen uzyskać aktualny adres URL po załadowaniu strony
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);
}
mam zarówno niejawne i jawne czekać wzywa czekać na stronie być w pełni załadowanym, zanim otrzymam aktualny adres URL. Nadal jednak drukuje adres URL strony 1 (oczekuje się, że będzie to adres URL strony 2).
BTW, Docs (teraz?) Twierdzi, nie mieszać ukryte/jawnych czeka ze względu na to czyni czas oczekiwania nieprzewidywalne. Odpowiednia wycena: _OSTRZEŻENIE: Nie mieszaj ukrytych i jednoznacznych oczekiwań. Może to spowodować nieprzewidywalne czasy oczekiwania. Na przykład ustawienie domyślnego czasu oczekiwania wynoszącego 10 sekund i jednoznaczne oczekiwanie wynoszące 15 sekund może spowodować przekroczenie limitu czasu po 20 sekundach. Od: http://www.seleniumhq.org/docs/04_webdriver_advanced.jsp#implicit-waits – mbafford