目前我在c#中使用selenium和phantomjs有以下代码:
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设置的 . 如果有人对更快的方法进行推荐,我们将不胜感激,谢谢!
1 回答
对于你的第一个问题,你应该考虑使用
ExpectedConditions' which is part of the
WebDriverWaitclass in
Selenium` . 以下代码示例取自此处,仅作为参考点 .更多关于
WebDriverWaits
here .至于你的第二个问题,在我看来,这是一个非常主观的问题 . 无头浏览器不一定比真正的浏览器更快或更慢 . 见article .