selenium - 在 Selenium 测试或回退期间,xPath 是定位元素的首选方式吗?
问题描述
在使用 Selenium IDE 设置测试时,我注意到该应用程序(看似)随机选择了一个元素的定位器。有时是一个类,有时是一个 ID,有时是一个xPath。
那么 xPath 是“后备”吗?也许最好使用 ID(如果可用)来进行更可靠的测试。或者是周围的其他方式?xPath 实际上是在页面上查找元素的黄金标准?
我可以调整你看到的测试,我想知道我是否应该对 ID 或 xPaths 犯错误。
解决方案
根据选择位置策略一章,定位元素的“首选”方式是使用它们的ID 属性:
使用元素 ID 或名称定位器在测试性能方面是最有效的,并且还可以使您的测试代码更具可读性,假设页面源中的 ID 或名称是 well-named。XPath 语句需要更长的时间来处理,因为浏览器必须运行它的 XPath 处理器。众所周知,XPath 在 Internet Explorer 版本 7 中速度特别慢。通过链接文本定位通常很方便并且性能良好。但是,此技术特定于链接。此外,如果链接的文本可能经常更改,则按元素定位将是更好的选择。
另一方面,XPath 是最强大的选项,因为:
- 它拥有对页面DOM的完全访问权限
- 您可以遍历 DOM Axes并查询元素子/父/兄弟、祖先等。
- 您可以应用contains()、starts-with()、、、等函数和运算符,因此您可以使用 XPath 定位任何页面上的任何元素,而其他选择器策略则不然。
and
or
not
推荐阅读
- c - 显示“输入一个字符:”两次并在没有输入第二次执行的情况下自动执行函数 Insert() 两次的原因是什么?
- python-3.x - Get index of a list with tuples in which the first element of the tuple matches pattern
- javascript - 在页面上选择新创建的元素 - puppeteer
- r - 在 R 中,打印数据框中人口密度最高的国家
- pandas - 如何创建一个 datframe 列来计算另一个列中每个值的出现次数?
- django - 姜戈。将新属性 ForeignKey 添加到用户模型现有模型:OperationalError
- php - Laravel 包路由找不到控制器类
- asp.net-core-mvc - MVC Core Google 外部提供者登录任务超时
- amazon-web-services - 使用 AWS Java sdk 选择配置文件
- karate - 如何在空手道 api 的单个 set 语句中设置多个 json 属性?