Я пытаюсь автоматизировать веб-приложение с использованием Selenium в C#,
На домашней странице я нажимаю ссылку, которая ведет на другую страницу. затем я перейти на эту новую страницу, используя следующий код
string parent = webDriver.CurrentWindowHandle; while (webDriver.WindowHandles.Count <= 1) ; // wait for new tab foreach (string handle in webDriver.WindowHandles) { if (handle != parent) { webDriver.SwitchTo().Window(handle); break; } }
новая страница только две ссылки (для выбора роли пользователя)
после нажатия на вторую ссылку, Целые страница изменяется на более Javascipt и новые данные загружаются на та же самая страница
Но, даже после того, как страница изменилась, webdriver возвращает тот же pageSource (на странице, где было 2 ссылки)
название измененной страницы дается верно браузером
Я читал в документации, что IE webdriver не всегда возвращает последнюю страницуSource
, сохраняя при этом, что это только страница Источник, который является неправильным, а драйвер - ha что я ожидаю
Так что я сделал небольшой тест, используя
webDriver.FindElements(By.XPath(//a);
но он не дал тегов с измененной страницы, вместо этого дал теги со страницы, которая имела две ссылки выбора.
Почему драйвер не возвращает последние теги?
Я застрял в этом выпуске, и я буду очень признателен за любую помощь.
спасибо заранее!IE Webdriver pageSource не обновляется после chnage на странице из-за javaScript
0
A
ответ
0
Я буду ждать элемента, указывающего, что страница полностью загружена перед тем, как исходный код страницы:
WebDriverWait wait = new WebDriverWait(driver, 20);
// switch to the next window
String main_handle = driver.getWindowHandle();
wait.until((WebDriver drv) -> {
for (String handle : drv.getWindowHandles()) {
if (handle != main_handle) {
drv.switchTo().window(handle);
return true;
}
}
return false;
});
// wait for an element which presence indicates that the page is loaded
wait.until(ExpectedConditions.presenceOfElementLocated(By.id("...")));
// get the page source
String page_source = driver.getPageSource();