Невозможно нажать кнопку, используя Selenium и Java. У него есть "style = display: none" в html, который вызывает проблему - PullRequest
0 голосов
/ 29 октября 2018

Я пробовал использовать разные xpath и т. Д., Но не смог нажать кнопку «Продолжить» в моем приложении. Ниже приведена одна из попыток справиться с этим: -

WebDriverWait wait2 = new WebDriverWait(driver,20);
    WebElement continueBtn = wait2.until(ExpectedConditions.elementToBeClickable(By.xpath("//*[@type = 'submit' and @class = 'btn btn--primary']")));

Когда я проверяю элемент, я нахожу в нем следующие детали: -

 <button class="btn btn--primary" type="submit" data-bind="enable: !processing() &amp;&amp; !$root.accountLocked()">
            <svg xmlns="http://www.w3.org/2000/svg" class="icon shape--loader" style="display: none;" viewBox="0 0 16 16" focusable="false" data-bind="visible: processing()">
                <title>Processing</title>
                <use xmlns:xlink="http://www.w3.org/1999/xlink" xlink:href="#shape--loader" />
            </svg> 
            Continue
        </button>

Выдается следующая ошибка: - Исключение в потоке "main" org.openqa.selenium.TimeoutException: Превышен тайм-аут после 20 секунд ожидания элемента, по которому можно кликнуть: By.xpath: // * [@ type = 'submit' и @class = 'btn btn - primary «]

Однако объект / элемент уже был загружен, поэтому не уверен, почему он не может щелкнуть по элементу.

Я также пробовал исполнитель JavaScript, но безрезультатно.

Пожалуйста, помогите мне решить это. Заранее спасибо !!!

Ответы [ 3 ]

0 голосов
/ 29 октября 2018

Если сложно найти атрибуты, найдите их по имени кнопки. Если на странице есть только одна кнопка «Продолжить», как.

WebElement continueBtn = wait2.until(ExpectedConditions.elementToBeClickable(By.xpath("//button[contains(text(),'Continue')]")));
0 голосов
/ 31 октября 2018

Наконец-то я получил решение. Прежде чем прийти к решению, я попробовал явное ожидание, код которого я сам вставил в вопрос, а затем попытался с помощью JavaScript-исполнителя, но он также не работал. Ниже приводится решение: -

    Actions action = new Actions(driver); 
    action.sendKeys(Keys.ENTER).build().perform();

Сработало идеально. Спасибо, ребята, которые все вложили свое время и усилия.

0 голосов
/ 29 октября 2018

Просто чтобы очистить воздух, приведенный выше XPath уникален? Если да, вы пробовали это сделать с JSExecutor?

Попробуйте с кодом ниже:

WebElement element = driver.findElement(By.xpath("//*[@type = 'submit' and @class = 'btn btn--primary']")));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", element);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...