Selenium-等待OutOfBound元素C#

问题描述 投票:0回答:1

我使用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

c# selenium action indexoutofboundsexception webdriverwait
1个回答
0
投票

在某些情况下,不能使用

IWebElement.Click();

但是

IWebElement.SendKeys(Keys.Enter);

我有一些情况,其中Click()对我不起作用。也许这对您的情况有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.