Невозможно нажать на кнопку webelement - PullRequest
0 голосов
/ 19 июня 2019

Невозможно нажать на кнопку webelement

Я пытался нажать на кнопку движением мыши, но безуспешно

мой внешний HTML как показано ниже:

<button class="btn btn-alt btn-small" type="button" ng-click="ecdapp.uploadBlueprintModalPopup();"> 
    Create
</button>

Кнопка xpath:

//*[@id="page-content"]/div[3]/button

Ответы [ 3 ]

1 голос
/ 19 июня 2019

Не видя источника на всю страницу, трудно сказать, насколько хорошо ваше выражение XPath или нет, вы можете попробовать найти кнопку, используя текст вместо

//button[normalize-space(text())='Create']

enter image description here

функция normalize-space() используется для сброса пробелов в заголовке / конце

Возможно, кнопка не доступна сразу,Я бы рекомендовал рассмотреть возможность использования подхода Явное ожидание через WebDriverWait class

WebElement myButton = new WebDriverWait(driver, 10)
        .until(ExpectedConditions
                .elementToBeClickable(By.xpath("//button[normalize-space(text())='Create']")));
myButton.click();

. Приведенный выше код будет пытаться найти вышеупомянутую кнопку в течение 10 секунд и щелкнуть ее, как толькокак это будет присутствовать / видимым / кликабельным.В противном случае произойдет сбой с NoSuchElementException

0 голосов
/ 19 июня 2019

Как вы можете видеть на скриншоте, этот Xpath работает на 100%. Если вы все еще не сможете нажать на эту кнопку, проблема не в xpath.Дайте мне знать, если все еще не удается.

 By.xpath("//button[@class = 'btn btn-alt btn-small' and @type = 'button']")

enter image description here

На основании вашего комментария:

Я пробовал этот код, но не смог нажать.элемент перехвачен: элемент ... не активен в точке (293, 97).Другой элемент получит щелчок: ... (Информация о сеансе: chrome = 74.0.3729.169)

Я уверен, что знаю, в чем ваша проблема, прежде чем нажать на этот элемент, что-то происходит на странице: Это говорит - Другой элемент получит щелчок , это означает, что есть другой элемент выше (перекрывающийся) вашей кнопки (всплывающее окно, страница неактивна (отключена во время загрузки, некоторые JS работают)), поэтому, когдаSelenium пытается нажать на вашу кнопку, фактически нажимая на этот блокирующий элемент.Попробуйте нажать после Thread.Sleep ();подождите 5-10 сек.Если это так, то вам нужно добавить условие перед тем, как найти кнопку, чтобы проверить, что элемент, препятствующий нажатию кнопки, исчез, а затем нажать на нее.

0 голосов
/ 19 июня 2019

Может быть, Xpath неправильный.Попробуйте следующий xpath:

// кнопка [содержит (текст (), «Создать»)]

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