【问题标题】:Unique name for the button with plus sign - want to click this button带有加号的按钮的唯一名称 - 要单击此按钮
【发布时间】:2019-03-15 22:25:50
【问题描述】:

代码是:

<button class="btn btn-default btn-xs" style="padding:0 5px" id="addPiidRelatedNumberBtn_332741000" ng-click="AddPiidRelatedNumber($event)" ng-show="EnableEditable &amp;&amp; CanEdit">
<span class="glyphicon glyphicon-plus" title="Add New Related Number"></span>

我在 STS 包中编写了这个 selenium 代码:​​

WaitUtility.ThreadSleep(1000);
driver.findElement(By.xpath("//button[@id='addPiidRelatedNumberBtn_332741000']")).click();

但我知道 id 可以随时更改,因为它有一些数字。有没有更好的编码方法来点击这个按钮?

【问题讨论】:

  • HTML 代码是:

标签: java selenium xpath css-selectors webdriver


【解决方案1】:

你可以试试这样的:

driver.findElement(By.xpath("//button[starts-with(@id,'addPiidRelatedNumberBtn_')]")).click();

您可以在本文中找到有关 XPath 用于测试的更多信息:

XPath tutorial on guru99

【讨论】:

    【解决方案2】:

    所需的元素是 Angular 元素,因此您需要诱导 WebDriverWait 以使 元素可点击,您可以使用以下任一解决方案:

    • cssSelector:

      new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.cssSelector("button.btn.btn-default.btn-xs>span.glyphicon.glyphicon-plus[title='Add New Related Number']"))).click();
      
    • xpath

      new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//button[@class='btn btn-default btn-xs']/span[@class='glyphicon glyphicon-plus' and @title='Add New Related Number']"))).click();
      

    【讨论】:

      【解决方案3】:

      你可以使用角度属性,

      driver.findElement(By.xpath("//button[@ng-click='AddPiidRelatedNumber($event)']"));
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-10-14
        • 2016-01-30
        • 1970-01-01
        • 1970-01-01
        • 2017-12-09
        相关资源
        最近更新 更多