2016-04-13 2 views
0

Я пытаюсь автоматизировать веб-приложение с использованием 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

Я буду ждать элемента, указывающего, что страница полностью загружена перед тем, как исходный код страницы:

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();