目前我使用硒和phantomjs在C#中有下面的代码:模拟浏览器C#和替代
public class Driver
{
static void Main()
{
using (var driver = new PhantomJSDriver())
{
driver.Navigate().GoToUrl("https://www.website.com/");
driver.Navigate().GoToUrl("https://www.website.com/productpage/");
driver.ExecuteScript("document.getElementById('pdp_selectedSize').value = '10.0'"); //FindElementById("pdp_selectedSize").SendKeys("10.0");
driver.ExecuteScript("document.getElementById('product_form').submit()");
driver.Navigate().GoToUrl("http://www.website/cart/");
Screenshot sh = driver.GetScreenshot();
sh.SaveAsFile(@"C:\temp\test.jpg", ImageFormat.Png);
}
}
}
我的目标是能够将产品添加到我的车,然后自动结帐。屏幕截图仅用于测试代码是否成功工作。我的第一个问题是,我经常会遇到一个错误,它无法找到产品ID为“pdp_selectedSize”的元素。我假设这是因为webdriver尚未加载页面,所以我正在寻找一种方法来持续检查,直到找到它而不必设置特定的超时。
我也在寻找更快的替代品来代替无头浏览器。我使用了无头浏览器而不是http请求,因为我需要某些cookie才能在页面上签出,并且这些cookie是通过页面内的javascript设置的。如果有人推荐更快的方法,将不胜感激,谢谢!
查看[Selenium参考资料](http://www.seleniumhq.org/docs/04_webdriver_advanced.jsp)中的'ExpectedConditions'。 – Brian
是WebDriverWait的一部分吗? – JBoy
它与'WebDriverWait'结合使用,是的。 – Brian