Текст имени файла загрузки переполняется только во время сеанса Selenium Webdriver, блокируя кнопку загрузки

#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, и на самом деле тест обнаружил настоящую ошибку, так что хорошо, что он не удался!