確定這裏我的代碼,但它會立即執行如何等待硒完成導航?
private static ChromeDriver mainDriver;
mainDriver.Navigate().GoToUrl(srFetchUrl);
string srPageSource = mainDriver.PageSource;
我必須獲得源代碼後,網頁實際上是導航到新的頁面,頁面加載
確定這裏我的代碼,但它會立即執行如何等待硒完成導航?
private static ChromeDriver mainDriver;
mainDriver.Navigate().GoToUrl(srFetchUrl);
string srPageSource = mainDriver.PageSource;
我必須獲得源代碼後,網頁實際上是導航到新的頁面,頁面加載
指定,隱性或顯性等待到加載頁面中的元素。
請參閱本link的C#語法等待
目前它給了我上一頁的源代碼。用這種方式它仍然可以提供上一頁的源代碼? – MonsterMMORPG
這不回答這個問題。如果您發佈的鏈接中有某些具體內容,請在此處發佈代碼。 – JeffC
@MonsterMMORPG因爲我理解你的問題,你需要導航到下一頁,並獲得該網頁的源代碼是否正確?糾正我,如果我錯了。 現在根據我的理解,問題是由於立即執行它不會得到下一頁的源代碼,所以如果我們指定大量的等待,直到下一頁加載,你可以執行命令來獲取源代碼。 – Dharam
你可以試試這個方法,這會等到頁面加載完全,你可以添加你的預期時間的網頁加載。
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,印度。
什麼是'googleTranslateMainDriver'? ''mainDriver.getPageSource()'應該只在Selenium 2.0中完全載入頁面後才返回。當然,JavaScript中的頁面後加載修改不會被處理。 – dhke
@dhke是的,它是mainDriver。當我瀏覽時,它也會返回舊頁面的源代碼 – MonsterMMORPG
爲什麼不嘗試頁面載入超時? driver.manage()。timeouts()。pageLoadTimeout(10,TimeUnit.SECONDS); – shank087