0

这是来自谷歌浏览器的图片

大家好,

我正在尝试编写相对表达式(XPath)以从以下网站获取卡详细信息

https://www.fakenamegenerator.com/gen-random-us-us.php

我看到卡名在 VISA 和 MasterCard 之间不断交替,

我想知道以下表达式是否可能

" //dl[dt/text()='MasterCard']/dd 或 //dl[dt/text()='Visa']/dd "

我可以使用 OR 运算符使表达式通用,以便它适用于 VISA 或万事达卡两种情况吗?

仅供参考,这是针对我正在练习以提高我在 WEB 自动化方面的技能的 Automation Anywhere 项目

4

1 回答 1

0

你很接近,但你不能or像那样使用运算符。当您想要有多个谓词条件时使用它。如果您希望有多个可能的节点结果(如您的示例中),您将使用管道|运算符

  1. //dl[dt/text()='MasterCard']/dd | //dl[dt/text()='Visa']/dd
  2. //dl[dt/text()='MasterCard' or dt/text()='Visa']/dd
  3. //dl[dt[text()='MasterCard' or text()='Visa']]/dd

第一个选项说:
给我一个dd元素,它是dl带有dt文本“万事达卡”元素的元素的直接子元素,
或者
是带有文本“Visa”元素的元素dd的直接子dl元素。dt

第二个选项说:
给我一个dd元素,它是一个元素的直接子dl元素,该dt元素具有文本“万事达卡”“签证”的元素。

第三个选项只是第二个更紧凑的版本。

因此,虽然这两个选项都会给您相同的结果(在这种情况下),但性能可能会大不相同。使用管道运算符基本上意味着您正在执行多个搜索而不是单个复杂的搜索。

于 2019-02-06T15:11:13.453 回答