OpenQA.Selenium.WebDriverException: «Невозможно нажать на элемент» - PullRequest
0 голосов
/ 10 октября 2019

У меня есть эта строка кода.

driver.FindElement(By.Id("BCA-button")).Click();

Это нормально работало на 'home'.

Я использую эти библиотеки в проекте модульного тестирования C #.

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using OpenQA.Selenium.IE;

Тот же код перестал работать в «офисе» и выдает эту ошибку.

OpenQA.Selenium.WebDriverException: 'Cannot click on element'

Единственное отличие между моей «домашней» и «офисной» средой состоит в том, что у меня большие мониторы в офисе и высокиескорость интернета.

Не уверен, почему эти факторы должны влиять на эту строку кода. Тот же код работал вчера в «доме», и сегодня он выдает ошибку в «офисе».

Есть мысли?

Added Snapshot for more clarity.

Здесьэто еще одна попытка.

I am using 'InvisibilityOfElementLocated'

Ответы [ 6 ]

0 голосов
/ 11 октября 2019

Попробуйте неявное ожидание

driver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(50);
0 голосов
/ 11 октября 2019

Причина, по которой вы получаете исключение:

OpenQA.Selenium.WebDriverTimeOutException: 'Cannot click on element'

Это то, что WebDriver ожидает элемент, но не может найти его до достижения лимита времени ожидания.

Есть ли какие-либо другие элементы, которые обертывают или закрывают элемент, на который вы пытаетесь щелкнуть?

0 голосов
/ 11 октября 2019

Я нашел проблему. Если в настройках разрешения экрана отображается размер текста, не равный 100% (рекомендуемые параметры), «Selenium Web Driver» не может выполнить событие щелчка.

Display Setting on Screen Resolution

0 голосов
/ 10 октября 2019

Различные способы щелчка по элементу хорошо описаны здесь: Selenium Web Driver & Java. Элемент не кликабелен в точке (x, y). Другой элемент получит щелчок

Я всегда использую 5-й способ, когда element.click() не работает, даже когда элемент доступен и к элементу применяется явное ожидание.

0 голосов
/ 10 октября 2019

Я думаю, что лучший способ - использовать XPath. Вы можете создать задержку, пока не будет найден элемент XPath.

0 голосов
/ 10 октября 2019

Induce WebDriverWait и ElementToBeClickable ()

WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10));
IWebElement elebutton = wait.Until(ExpectedConditions.ElementToBeClickable(By.Id("BCA-button")));
elebutton.Click();

Вам необходимо импортировать эту библиотеку.

using SeleniumExtras.WaitHelpers;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...