«элемент перехвачен» только на TFS - PullRequest
0 голосов
/ 16 октября 2019

У меня есть около 130 тестов Selenium UI для веб-приложения, которое мы сейчас разрабатываем.

Проблема, с которой я сталкиваюсь, заключается в том, что всякий раз, когда я запускаю тесты локально через проводник тестов Visual Studio (vstest), я никогдастолкнулся с этой ошибкой раньше. Проблема в том, что некоторые тесты продолжают давать сбой из-за этого сообщения, когда тесты выполняются на TFS (также с помощью vstest на TFS). element click intercepted

Я также на 100% уверен, что нет наложенного элемента, который мешает методу щелчка, поскольку тесты никогда не завершаются с этим сообщением при локальном запуске.

Любая идея, что это могло бы сделатьбыть?

Ответы [ 2 ]

1 голос
/ 16 октября 2019

Это звучит как моя бесконечная битва между выполнением теста Дженкинса и локальным тестированием.

Я могу вам сказать прямо сейчас, проблема, вероятно, в размере браузера, с которым вы запускаете свои тесты.

У меня были проблемы, когда все мои локальные тесты проходили, но я получал случайные ошибки, как вы упоминали при запуске тестов через Jenkins или TFS, обычно ошибки, указывающие на то, что мои элементы не были активными и т.д.

Вы проводите тесты в режиме без головы? Если нет, вы должны начать немедленно. Переключение на --headless и установка размера браузера привело к решению большинства моих проблем для меня:

var headlessOptions = new ChromeOptions();
headlessOptions.AddArgument("--headless");
headlessOptions.AddArguments("--disable-gpu");
headlessOptions.AddArguments("--window-size=1920,1200");

Вам придется использовать --headless, чтобы это тоже работало. Я попытался запустить свои тесты, ТОЛЬКО установив размер окна, но в любом случае тесты все равно не пройдут, поскольку разрешение виртуальных машин будет недостаточно большим, чтобы справиться с размером браузера, который я установил.

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

Вы можете решить эту проблему, используя 2 метода. 1. Запуск хрома в автономном режиме. 2. Вызов элемента перед нажатием или взаимодействием с ним

Основная причина этой проблемы заключается в том, что браузер не загружается с размером браузера, как у браузера. при локальном тестировании

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

IWebElement element= driver.FindElement(By.Id(selector));
((IJavaScriptExecutor)driver).ExecuteScript("arguments[0].scrollIntoView(true);", element);
...