Как найти элемент кнопки через веб-драйвер Selenium и xpath - PullRequest
0 голосов
/ 12 июня 2018

снимок

 <button class="add-school btnEditDashboard btn btn-primary pull-right" ng-click="CreateNewSchool()" name="AddSchool" type="submit">Add School</button>

Также пробовал xpath.(\\html/body/div[2]/div/div[2]/div/div/div[1]/div/div[2]/button)

Exception in thread "main" org.openqa.selenium.NoSuchElementException: no such element: Unable to locate element: {"method":"tag name","selector":"AddSchool"}

Ответы [ 5 ]

0 голосов
/ 12 июня 2018

Поскольку HTML не является общим, это может быть 2 вещи

  1. Iframe: вам нужно изменить фокус драйверов на фрейм, в котором находится элемент. https://www.guru99.com/handling-iframes-selenium.html

  2. Селен выполняется до того, как элемент станет видимым.Используйте явное ожидание, чтобы дождаться взаимодействия элемента, прежде чем щелкнуть по нему.Понять все типы условий ожидания через http://www.seleniumeasy.com/selenium-tutorials/webdriver-wait-examples

0 голосов
/ 12 июня 2018

попробуйте с этим кодом:

new WebDriverWait(driver, 10).until(ExpectedConditions.elementToBeClickable(By.xpath("//button[text()='Add School' and @name='AddSchool' and @ng-click='CreateNewSchool()']"))).click();  

Если он находится в iframe , пожалуйста, переключите фокус драйвера на соответствующий iframe и затем попытайтесь взаимодействовать с ним.

0 голосов
/ 12 июня 2018

AddSchool - это атрибут name, а не tag name (в вашем случае это будет button).Попробуйте

findElement(By.name("AddSchool"))
0 голосов
/ 12 июня 2018

Чтобы найти элемент вместо использования absolute xpath , было бы оптимальным использовать относительный xpath .Теперь, в соответствии с HTML , которым вы поделились, элемент является Angular элементом, поэтому вам нужно вызвать WebDriverWait для элемент для нажатия следующим образом:

new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//button[@class='add-school btnEditDashboard btn btn-primary pull-right' and @name='AddSchool']"))).click();
0 голосов
/ 12 июня 2018

Попробуйте этот xpath:

//button[@ng-click='CreateNewSchool()']
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...