【转载】selenium with PhantomJs wait till page fully loaded?

I use Selenium with Phantomjs, and want to get the page content after the page fully loaded.

I tried http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp but it seems not working with phantomjs

Explicit wait:

using (IWebDriver driver =newPhantomJSDriver()){IWait<IWebDriver> wait =newOpenQA.Selenium.Support.UI.WebDriverWait(driver,TimeSpan.FromSeconds(30.00));
    wait.Until(driver1 =>((IJavaScriptExecutor)driver).ExecuteScript("return document.readyState").Equals("complete"));

    driver.Navigate().GoToUrl(url);

    content = driver.PageSource;

    driver.Quit();}

Another test:

using (IWebDriver driver =newPhantomJSDriver()){WebDriverWait wait =newWebDriverWait(driver,TimeSpan.FromSeconds(10));

    driver.Url= url;IWebElement myDynamicElement = wait.Until<IWebElement>((d)=>{return d.FindElement(By.Id("footer"));// failed because it's not yet loaded full content });

    content = driver.PageSource;}

Or implicit wait:

using (IWebDriver driver =newPhantomJSDriver()){
    driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(30));
    driver.Navigate().GoToUrl(url);

    content = driver.PageSource;

    driver.Quit();}

The content is still lacking. The only way is to put Thread.Sleep(waitTime); which is not a good solution for this.

Thanks.

posted @ 2017-12-06 17:57  公众号python学习开发  阅读(290)  评论(0编辑  收藏  举报