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.
转载于:https://www.cnblogs.com/c-x-a/p/7994065.html