Я использую привязку 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)'
, и я не могу нажать на кнопку
В большинстве случаев щелчок будет выполняться, но нет действие будет следовать из этого. Если я хочу, чтобы кнопка работала правильно (go в корзине), мне нужно поставить System.Threading.Thread.Sleep(2000)
, чтобы она работала, или Console.ReadLine()
. Даже если я отключаю щелчок автоматизации и делаю это вручную, кнопка не всегда срабатывает.
Как я могу убедиться, что мой элемент addToCart отображается после того, как я перешел в Element? таким образом, чтобы щелкнуть по нему, когда он будет готов.
Спасибо, Элке Джонсон