2016-04-13 4 views
0

C#でSeleniumを使用してWebアプリケーションを自動化しようとしています。
ホームページでは、別のページにつながるリンクをクリックしています。 はその後、私はこの新しいページが2番目のリンクをクリックした後、(ユーザーの役割を選択するための)2つのリンクだけ
を持ち、javascipt、新たなデータによって全体のページの変更が上にロードされ、次のコード
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; } }
を使用して、この新しいページに切り替え同じページ
しかし、ページが変更された後でも、webdriverは(リンクが2つあるページの)同じpageSourceを返します
変更されたページのタイトルはブラウザによって正しく与えられます
私はIE webdriverは常に最新のpageSourceを返すとは限りません
それは間違っていてドライバがhaのページソースだけです

webDriver.FindElements(By.XPath(//a); を使って小さなテストをしましたが、変更されたページからタグを与えず、代わりに2つの選択リンクを持つページからタグを与えました。
ドライバが最新のタグを返さないのはなぜですか?
私はこの問題に立ち往生しており、本当に助けに感謝します。
ありがとうございます!IE Webdriver pageSourceがjavaScriptのためにページ内でchnageの後にリフレッシュされない

答えて

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(); 
関連する問題