-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,印度。