用PhantomJs的硒等到页面满载?

nam*_* vo 6 c# selenium phantomjs

我使用Selenium和Phantomjs,并希望在页面完全加载后获取页面内容.

我试过http://docs.seleniumhq.org/docs/04_webdriver_advanced.jsp,但似乎无法使用phantomjs

明确的等待:

using (IWebDriver driver = new PhantomJSDriver())
{
    IWait<IWebDriver> wait = new OpenQA.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();
}
Run Code Online (Sandbox Code Playgroud)

另一个测试:

using (IWebDriver driver = new PhantomJSDriver())
{
    WebDriverWait wait = new WebDriverWait(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;
}
Run Code Online (Sandbox Code Playgroud)

或隐含等待:

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

    content = driver.PageSource;

    driver.Quit();
}
Run Code Online (Sandbox Code Playgroud)

内容仍然缺乏.唯一的方法是放入Thread.Sleep(waitTime); 这不是一个好的解决方案.

谢谢.

dja*_*fan 1

尝试这样的事情:

try (
  ExpectedConditions.presenceOfElementLocatedBy
  ExpectedConditions.visibilityOfElementLocatedBy
) catch error if both conditions are not met
Run Code Online (Sandbox Code Playgroud)