当前位置: 首页 > 知识库问答 >
问题:

Selenium webElement属性更改

许承悦
2023-03-14

我正在用selenium自动化一个应用程序。没有像id这样的普通标签,我可以通过它找到元素。所以我使用的是xpath[driver.findElement(By.xpath())]。但是现在我发现WebElement的一些XPath在运行时动态变化,所以我的测试用例失败了。甚至相对xpath选项也不适用于HTML。我正在粘贴AUT的html的一部分。请让我知道如何处理这种情况。

<div>
<button class="btn btn-primary ng-hide" ng-click="unlockOrder('/content/boss/en/dashboard');" ng-show="enableUnlockButton" type="button">Unlock Order</button>
<button class="btn btn-primary" ng-click="discardOrder('/content/boss/en/create-order/pre-order-options');" type="button">Discard Order</button>
<button class="btn btn-primary" ng-click="saveOrder(showSaveButton && ban_search.$valid);" ng-disabled="showSaveButton==false || ban_search.$invalid" type="button" disabled="disabled">Save Order</button>
</div>

共有1个答案

党星鹏
2023-03-14

我会依靠按钮文本:

driver.findElement(By.xpath('//button[. = "Unlock Order"]'))

其中 指按钮的文本。

 类似资料:
  • 简单验证器 向属性添加“验证”例程的快速方法是使用 validates() 装饰者。属性验证器可以引发异常,停止改变属性值的过程,或者将给定值更改为其他值。与所有属性扩展一样,验证程序只由普通的userland代码调用;当ORM填充对象时不会发出验证程序:: from sqlalchemy.orm import validates class EmailAddress(Base): __

  • 问题内容: 如何从Java程序外部更改user.home系统属性,使其认为它与D:\ Documents and Settings \%USERNAME%是不同的目录?通过环境变量还是VM参数? 问题答案: 设置VM参数应该起作用: 这是一个测试案例: 在Win XP和Linux上使用Java 1.5.0_17测试

  • 问题内容: 我试图在单击另一个元素时更改一个元素的CSS。我进行了很多搜索,但没有一个能完美地工作。目前,我正在使用下面的代码,但是它不起作用。谁能告诉我我错过了什么? 问题答案: 首先,使用属性添加事件处理程序是实现所需功能的一种非常过时的方法。当您使用jQuery标记问题时,这是一个jQuery实现: 一种更有效的方法是将这些样式放入一个类中,然后将该类添加到onclick上,如下所示:

  • 问题内容: 如何使用WebDriverWait等待属性更改? 在我的AUT中,我必须等待按钮被启用后才能继续,但是不幸的是,由于开发人员对页面进行编码的方式,我无法使用WebElement的isEnabled()方法。开发人员正在使用一些CSS来使按钮看起来像已禁用,因此用户无法单击它,并且isEnabled方法始终为我返回true。因此,我要做的就是获取属性“ aria-disabled”,并检

  • 在JavaScript中是否可以监听属性值的更改?例如: 我想响应属性中的任何更改。 我已经阅读了对象,以及该对象的替代对象(包括使用动画事件的对象)。据我所知,它们是关于实际DOM的更改。我更感兴趣的是对一个特定DOM元素的属性更改,所以我不认为仅此而已。当然,在我的实验中,这似乎不起作用。 我希望在没有jQuery的情况下这样做。 谢谢

  • Firefox的Firebug有一个很好的特性,叫做“属性更改时中断”,在这里我可以标记任何对象的任何属性,它将在更改之前停止JavaScript执行。 我试图在Google Chrome中实现同样的功能,但在Chrome调试器中找不到该功能。我如何在谷歌浏览器中做到这一点?