Я использую 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();
}
Другой тест:
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;
}
Или неявное ожидание:
using (IWebDriver driver = new PhantomJSDriver())
{
driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds(30));
driver.Navigate().GoToUrl(url);
content = driver.PageSource;
driver.Quit();
}
Содержимое по-прежнему отсутствует. Единственный способ - поставить Thread.Sleep (waitTime); что не является хорошим решением для этого.
Спасибо.
URL должен быть равен почти сразу. Проблема заключается в том, что контент загружается, прежде чем что-либо делать с ним –