-1

確定這裏我的代碼,但它會立即執行如何等待硒完成導航?

 private static ChromeDriver mainDriver; 
     mainDriver.Navigate().GoToUrl(srFetchUrl); 
     string srPageSource = mainDriver.PageSource; 

我必須獲得源代碼後,網頁實際上是導航到新的頁面,頁面加載

+0

什麼是'googleTranslateMainDriver'? ''mainDriver.getPageSource()'應該只在Selenium 2.0中完全載入頁面後才返回。當然,JavaScript中的頁面後加載修改不會被處理。 – dhke

+0

@dhke是的,它是mainDriver。當我瀏覽時,它也會返回舊頁面的源代碼 – MonsterMMORPG

+0

爲什麼不嘗試頁面載入超時? driver.manage()。timeouts()。pageLoadTimeout(10,TimeUnit.SECONDS); – shank087

回答

-1

指定,隱性或顯性等待到加載頁面中的元素。

請參閱本link的C#語法等待

+0

目前它給了我上一頁的源代碼。用這種方式它仍然可以提供上一頁的源代碼? – MonsterMMORPG

+0

這不回答這個問題。如果您發佈的鏈接中有某些具體內容,請在此處發佈代碼。 – JeffC

+0

@MonsterMMORPG因爲我理解你的問題,你需要導航到下一頁,並獲得該網頁的源代碼是否正確?糾正我,如果我錯了。 現在根據我的理解,問題是由於立即執行它不會得到下一頁的源代碼,所以如果我們指定大量的等待,直到下一頁加載,你可以執行命令來獲取源代碼。 – Dharam

0

你可以試試這個方法,這會等到頁面加載完全,你可以添加你的預期時間的網頁加載。

public void E_WaitForPageLoad() throws Exception 
{ 
    JavascriptExecutor js = (JavascriptExecutor)driver; 
    //This loop will rotate for 100 times to check If page Is ready after every 1 second. 
    //You can replace your if you wants to Increase or decrease wait time. 
    int waittime; 
    waittime = 60; 
    for (int i=0; i<waittime; i++) 
    { 
     try 
     { 
      Thread.sleep(1000); 
     }catch (InterruptedException e) {} 
     //To check page ready state. 
     if (js.executeScript("return document.readyState").toString().equals("complete")) 
     { 
      //System.out.println("Wait for Page Load : "+js.executeScript("return document.readyState").toString()); 
      break; 
     } 
    } 
    System.out.println("\nWeb-Page Loaded."); 
} 

謝謝你,
埃德d,印度。