#selenium #google-chrome #testing #selenium-webdriver #semantic-ui
#selenium #google-chrome #тестирование #selenium-webdriver #семантический интерфейс
Вопрос:
Во время тестирования с Selenium Chrome Webdriver имя файла, выбранное в поле ввода файла, перекрывает край поля и закрывает кнопку загрузки, поэтому на нее нельзя нажать.
Ошибка, которую я получаю при тестировании, действительна и правильна, поскольку я также не могу нажать на кнопку вручную:
Exception in thread "main" org.openqa.selenium.ElementClickInterceptedException: element click intercepted: Element <button type="submit" id="article-file-upload-submit" class="ui primary button">...</button> is not clickable at point (427, 451). Other element would receive the click: <input type="file" name="import" id="article-file-upload-file" class="ui button" required="" data-qa-tag="project-file-import">
Почему просмотр страницы в сеансе webdriver изменяет отображение поля?
Вот как это обычно выглядит в Chrome:
Вот как это выглядит во время тестирования в Chrome через webdriver:
(в реальной жизни они имеют одинаковый размер)
Я загружаю ту же страницу здесь, в той же версии браузера, вошел в систему как тот же пользователь, внутри того же проекта и загружаю тот же файл. Единственное отличие, которое я вижу, заключается в том, что «плохой» запускается из Java, Selenium, Webdriver, из проекта VS Code. Так что это другой процесс.
Версия Chrome 86.0.4240.80 (официальная сборка) (x86_64)
chromedriver v86
Mac OSX
Окно браузера не стало уже (скорость реагирования не влияет на этот элемент).
Я использую последнюю версию Semantic UI v2, поле находится внутри аккордеона внутри сегмента, но за 2 года разработки я никогда не видел этой проблемы с переполнением.
<div class="ui input">
<input type="file" name="import" id="article-file-upload-file" class="ui button" required>
</div>
<button type="submit" id="article-file-upload-submit" class="ui primary button">
<i class="icon upload"></i> UPLOAD
</button>
Ответ №1:
Щелчок с помощью javascript должен работать:
JavascriptExecutor javascriptExecutor = (JavascriptExecutor) driver;
String script = "document.getElementById('article-file-upload-submit').click();";
javascriptExecutor.executeScript(script);
Комментарии:
1. Да, я тоже это где-то видел, но не пробовал. На самом деле я бы предпочел решить проблему перекрытия, но если нет, то я попробую это.
Ответ №2:
Оказалось, что проблема с перекрытием была просто ошибкой CSS в моей последней версии приложения, но по какой-то причине она появилась только в новом сеансе Chrome веб-драйвера.
Некоторое время спустя он появился в другом окне Chrome, так что, вероятно, это была просто проблема с кэшированием CSS. Я не видел этого раньше, поскольку я использую автоматическую сборку Gulp с Browsersync, которая обычно поддерживает все в актуальном состоянии.
Так что это не имеет никакого отношения к webdriver, и на самом деле тест обнаружил настоящую ошибку, так что хорошо, что он не удался!