由于javaScript

时间:2016-04-13 16:18:51

标签: javascript c# selenium internet-explorer-8

我正在尝试使用C#中的Selenium自动化Web应用程序 在主页上,我点击链接指向另一页。 然后我使用以下代码切换到这个新页面                 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并不总是返回最新的pageSource
认为,只有页面源不正确,驱动程序正在处理我期待的chnaged页面 所以我用一个小测试   webDriver.FindElements(By.XPath(//a); 但它没有从更改的页面给出标签,而是从页面上给出了带有两个选择链接的标签 为什么驱动程序没有返回最新的标签?
我坚持这个问题,我真的很感激任何帮助..
提前谢谢!!

1 个答案:

答案 0 :(得分: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();