我使用Selenium C#绑定,我想单击addToCart按钮。
首先,我正在等待按钮出现在带有ExpectedConditions.ToBeClickable的页面上。
然后,我需要向下滚动页面才能单击按钮。我使用了Selenium.Interactions类,但它与js executor也能正常工作。
private By addToCartBy = By.XPath("/html/body/div[2]/div/div/div[1]/div/div[3]/div[2]/div/section[1]/div[2]/aside/div/div[2]/div/div[2]/div/button");
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(5));
IWebElement addToCart = wait.Until(ExpectedConditions.ElementToBeClickable(addToCartBy));
Actions action = new Actions(driver);
action.MoveToElement(addToCart);
action.Perform();
addToCart.Click();
[当我使用Chrome驱动程序执行此测试时,页面会加载,导航器向下滚动到元素addToCart并单击它,但是我无法使按钮正常工作。
[当我使用Firefox驱动程序时,会引发以下异常:OpenQA.Selenium.WebDriverException : '(1435, 998) is out of bounds of viewport width (1920) and height (966)'
,我无法单击按钮
在大多数情况下,将执行单击,但此后将不执行任何操作。如果我想使按钮正常工作(使用购物车),则需要输入System.Threading.Thread.Sleep(2000)
或Console.ReadLine()
才能生效。即使我禁用了自动单击并手动执行,该按钮也不会总是继续进行。
移动到Element后如何确保显示我的元素addToCart? 在他准备好后可以单击它。
谢谢你,Eelke Johnson
在某些情况下,不能使用
IWebElement.Click();
但是
IWebElement.SendKeys(Keys.Enter);
我有一些情况,其中Click()对我不起作用。也许这对您的情况有所帮助。