【问题标题】:How to find the button element through Selenium webdriver and xpath如何通过 Selenium webdriver 和 xpath 找到按钮元素
【发布时间】:2018-06-12 09:05:37
【问题描述】:

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"}

【问题讨论】:

  • 您的实际问题是什么?您尝试 Xpath 的 HTML 代码是什么样的?
  • 我猜,您正在尝试使用带有值 addschool 的标签名称来查找元素。你必须使用正确的方法。
  • 请检查是否在iframe中?
  • 很好,先生,它与 iframe 焦点一起工作

标签: java selenium selenium-webdriver xpath webdriver


【解决方案1】:

试试这个代码:

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

如果在iframe中,请将驱动的焦点切换到相应的iframe,然后尝试与之交互。

【讨论】:

    【解决方案2】:

    AddSchoolname 属性,而不是tag name(在您的情况下为button)。试试

    findElement(By.name("AddSchool"))
    

    【讨论】:

    • 在线程“main”org.openqa.selenium.NoSuchElementException 中尝试了兄弟不工作异常:没有这样的元素:无法找到元素:{“方法”:“类名”,“选择器”:“添加学校"}
    • @NagaNaveenb 您可能需要在找到元素之前添加一些等待。
    • @NagaNaveenb 你需要使用By.name,而不是By.className
    【解决方案3】:

    要定位元素而不是使用绝对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();
    

    【讨论】:

    • 我不明白这一点“逻辑xpath”?什么是逻辑 xpath?要么是相对的,要么是绝对的。
    【解决方案4】:

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

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

    2. Selenium 在元素可见之前执行。使用 Explicit Wait 等待元素可交互,然后再单击它。通过http://www.seleniumeasy.com/selenium-tutorials/webdriver-wait-examples了解所有类型的等待条件

    【讨论】:

      【解决方案5】:

      试试这个 xpath:

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

      【讨论】:

      • 线程 "main" org.openqa.selenium.NoSuchElementException 中的异常:没有这样的元素:无法找到元素:{"method":"xpath","selector":"//button[@ ng-click='CreateNewSchool()']"}
      • @NagaNaveenb 使用调试器检查,您是否在正确的位置找到元素。如果是这样,您需要等待片刻,直到页面被加载。您可以尝试使用 Explicit Wait 或 Thread.sleep();
      猜你喜欢
      • 2014-08-19
      • 2018-08-28
      • 1970-01-01
      • 1970-01-01
      • 2021-03-31
      • 1970-01-01
      • 2013-01-21
      • 1970-01-01
      • 2021-03-20
      相关资源
      最近更新 更多