如何通过Selenium webdriver和xpath找到按钮元素

时间:2018-06-12 09:05:37

标签: java selenium selenium-webdriver xpath webdriver

snapshot

 <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 :(得分:1)

$(function () { $("#choose-material").change(function() { var val = $(this).val(); if(val.indexOf("C-D")>=0) { $("#choose-size").show(); } }); }); AddSchool属性,而不是name(在您的情况下为tag name)。尝试

button

答案 1 :(得分:1)

要找到元素而不是使用绝对xpath ,最好使用 relative 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();

答案 2 :(得分:1)

尝试使用此代码:

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

如果它位于 iframe 中,请将驱动程序的焦点切换到相应的 iframe ,然后尝试与之互动。

答案 3 :(得分:1)

由于不共享HTML,可能是两件事

  1. Iframe:您需要将驱动程序焦点更改为元素所在的iframe。 https://www.guru99.com/handling-iframes-selenium.html

  2. Selenium在元素可见之前执行。在单击之前使用显式等待等待元素可交互。通过http://www.seleniumeasy.com/selenium-tutorials/webdriver-wait-examples

  3. 了解所有类型的等待条件

答案 4 :(得分:0)

试试这个xpath:

//button[@ng-click='CreateNewSchool()']