Перейдите в WebElement с непрозрачностью 0 через API взаимодействий Java в Selenium - PullRequest
0 голосов
/ 05 ноября 2019

Рассмотрим следующее <select> с внутренней тестовой страницы Selenium :

<select id="invisi_select" style="opacity:0;">
    <option selected value="apples">Apples</option>
    <option value="oranges">Oranges</option>
</select>

. Используется для имитации невидимого элемента, как предполагает id, что делаетсяустановка opacity в 0.

Хотя элемент не виден, пользователь может фактически взаимодействовать с ним. Если я открою страницу в браузере и нажму на позицию элемента, откроется меню выбора. Я полагаю, что именно поэтому WebElement#isDisplayed() возвращает true для этого элемента, что также предлагают эти старые проблемы Selenium:

Для выполнения таких действий, как щелчки, мы недавно переключились на API взаимодействий Java по нескольким причинам, например, на предотвращение ElementClickInterceptedException с . (Обратите внимание, что речь не идет о рефакторинге набора тестов Selenium, это происходит в контексте универсального исполнителя действий, который работает поверх Selenium API.) Однако, если я сделаю что-то вроде:

WebElement applesOption = /* get apples option */
new Actions(webDriver).moveToElement(applesOption)
        .click()
        .perform();

При переходе к элементу возникает следующее исключение:

org.openqa.selenium.JavascriptException: javascript error: Failed to execute 'elementsFromPoint' on 'Document': The provided double value is non-finite.

Я полагаю, это потому, что elementsFromPoint() через API действий WebDriver , похоже, возвращает "неконечный «двойной» для таких прозрачных элементов?

Есть ли способ предотвратить это при использовании Actions? Может быть, в дополнение к проверке, является ли элемент кликабельным (ExpectedConditions#elementToBeClickable(...)), я должен был бы проанализировать - что звучит ужасно - такие атрибуты, как opacity?

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