我们只需4/30即可调整Futureestack注册。条款和条件适用。 现在注册

优化新型遗物合成仪监视器的XPath选择器

6分钟阅读

经过布莱恩啄

一个关键特征新的遗物合成纤维脚本浏览器监视器。这些是您创建的脚本类似javascript的脚本语言那个驱动器- Google Chrome浏览器。脚本浏览器监视器允许您在具有真实浏览器的网站上跟踪多步进程。在几个中对象定位器创建脚本显示器时可用的选项,XPath选择器也许是最强大的。

XPath选择器指向XML文档的树结构中的对象元素。通过优化综合监视器中的XPath选择器,可以:

  • 减少Web应用程序更改将破坏XPath选择器的可能性。这有助于避免不必要的监视器故障和警报,因为应用程序更改可能导致您的脚本找不到匹配项,或导致它与不正确的元素交互。
  • 提高您的监视器的可读性,使故障排除和未来的修订更容易。

此帖子中包含的示例提示可以帮助您制作最佳XPath优化,并避免在监视器脚本中不必要的劳动。

为什么创建自己的XPath选择器?

由浏览器导出或录像机创建的XPath选择器Katalon自动化录音机工作,但通常提供重叠XPath选择器语句,影响可读性,如果您在申请中进行更改,可能会导致稳定性问题。Katalon Recorder对ID,LinkText和其他简单对象标识符进行了很好,但它可以创建难以读取的XPath选择器,可能无法正确识别必要的对象。

识别和修改XPath选择器

Google Chrome中的开发人员工具大大简化了编写监视器脚本的过程。要开始,请识别要检查的元素,然后右键单击它。


检查Chrome开发人员工具中的元素。

这将打开Chrome的开发人员工具。然后,在“元素视图”中,右键单击要在显示器中与要操作的对象并选择复制>复制XPath.,创建XPath语句;在这个例子中:

// * [@ id =“post-47124”] / div [1] / h3 [1] /强

此示例中生成的浏览器的XPath远非理想。首先,如果您对页面结构进行更改,则XPath将不再匹配正确的对象后47124目的。其次,这个XPath使脚本更难以阅读和排除。我们可以使用更简单的XPath选择器找到相同的对象,例如:

// * [text()=“它意味着以实体为中心”]

我们甚至可以验证此选择器没有监视器。在元素视图中,激活查找命令+ F.。到查找搜索字段,添加XPath选择器

// * [text()=“它意味着以实体为中心”]

Chrome将突出显示匹配对象,并指出找到了多少匹配项,如此所示:


在开发人员工具的元素视图中搜索对象。

从例子学习

让我们来看看几个糟糕的“坏”XPaths的例子,并表明如何改善它们的建议。

1.坏XPath:/ html / body / div [2] / form / div / div [1] / div [1]

建议:避免使用绝对XPath,其中包含来自对象的整个路径,您需要一直到HTML元素。使用绝对路径,如果您对脚本与div对象影响到div对象的任何应用程序更改,则显示器将失败或导致操作(单击,sendkeys等)与页面上的错误对象进行交互。

使用相对XPath,并尽可能使用XPath中最少的级别。检查div元素以确定是否存在可以在XPath中使用的任何标识属性。例如,如果元素有“Hello World”的文本,则可以使用// div [text()=“hello world”]作为你的选择器。

2.坏XPath:(.//* [标准化 - 空间(text())和标准化 - 空间(。)='下一个幻灯片'] [1] /以下:: span [2]


Google Chrome开发人员工具中显示的复杂XPath。

建议:此示例是由Katalon录像机创建的XPath,该XPath将从新的遗物主页中单击“介绍新的遗物单”链接。虽然这个XPath技术上工作,但它很复杂,难以阅读,易碎的申请改变。

XPath在第一个元素之后将第二个跨度元素定位,其中“下一个幻灯片”文本,这不是出于几个原因的理想选择。首先,它将更好地瞄准<一种>元素而不是跨度。其次,该示例不必要地基于单独元素的位置定位对象。对此对象的更改可能会破坏选择器。最后,XPath本身并不清楚它寻找的内容,这可能会使故障排除努力复杂化。更好地使用<的标题属性<一种>选择器中的元素:

// a [@ title =“介绍新的遗物单个”]

XPath选择器优化的五个提示

最后,这些提示可以帮助优化XPath语法:

1。使用包含功能将选择器匹配到对象基于属性的部分文本内容或部分:

文本:// stront [包含(text(),“绝对”)]

属性:// img [包含(@src,“附件-menu-button.png”)]

2。如果有其他标签,例如例如,作为您匹配的对象的一部分,使用DOT(““) 代替text():// div [。,“Hello World”]

3.而不是查找特定的div或span,使用条件逻辑,例如和/或表达,并搜索使用“使用”匹配的任何对象*“通配符。此XPath查找具有包含面板标题的类属性的对象,也有文本报告:// * [包含(@class,panel-title“)和text()=”报告“]

4.出于不区分大小写的文本(将大写字母切换为小写字母),请使用转换功能。这将对象文本转换为小写,以便您不再需要担心病例敏感性:// a [包含(翻译(text(text(text(text(),“abcdefghijklmnopqrstuvwxyz”,“abcdefghijklmnopqrstuvwwxyz”),“新闻室”)]

5。使用标准化空间功能来处理新行,尾随空格等。这会删除前导和尾随空格,并用单个空格替换多个空格:// span [ranalize-space(text())=“介绍新的遗物one>”]

显然这不是一个详尽的XPath最佳实践列表,但希望这些提示将为您提供一些关于如何最好地使用脚本监视器中的XPath语法的想法。有关详细信息,请查看此项Guru99在Selenium Webdrivers的XPath教程,不要错过我们的博客文章使用CSS选择器创建弹性Selenium脚本的提示