xpath - 如何通过 Xpath 使用 Selenium 来确定元素的类?

标签 xpath selenium getattribute

我试图在 selenium 中使用 xpath 来选择 td 中的 div 元素。 我真正想做的是确定 div 的类,以及它是否属于 LOGO1、LOGO2、LOGO3 等。最初,我只是想捕获 image:url 来确定使用了 logo.jpg,但无论是谁制作了目标网站,都为每种 Logo 类型使用了一张图像,并使用 css 来确定图像的哪一部分将被使用。被显示。想象一下一张 Sprite 图像上有 4 个图像。这就是为什么我必须确定 div 的类而不是挖掘 css 路径的原因。

在 selenium 中,我使用 storeElementPresent | /html/body/form/center/table/tbody/tr/td[2]/div[3]/div[2]/fieldset/table/tbody/tr[2]/td/div/table/tbody/tr[${i}]/td[8]/div//类 |卡标志 .

div 有多个类,所以我认为这就是问题所在,但感谢任何帮助。下面是目标源。这是来自 tbody 中表格的来源。 Selenium 可以毫无问题地识别到 td[8],但随后无法收集 div。请帮忙!

<td class="togglehidefields" style="width:80px;">
<div class="cardlogo LOGO1" style="background-image:url(https://www.somesite.com/merchants/images/image.jpg)"></div>
<span id="ContentPlaceHolder1_grdCCChargebackDetail_lblCardNumber_0">7777</span>
</td>

我正在摆弄selenium.getAttribute(),但它一直出错,有什么想法吗?

最佳答案

这个<div/>元素具有一个具有一个值的类属性,但该属性在解析为 HTML 时会被标记化。

由于 selenium 仅支持 XPath 1.0,因此您需要检查如下类:

//div[contains(@class, "LOGO1") or contains(@class, "LOGO2")]

根据需要扩展该模式并将其嵌入到您的表达式中。

使用 XPath 2.0 及更高版本,您可以标记并使用 =适用于基于集合的语义的运算符:

//div[tokenize(@class, ' ') = ("LOGO1", "LOGO2")]

关于xpath - 如何通过 Xpath 使用 Selenium 来确定元素的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17302381/

相关文章:

java - 关于创建 XML 文件的问题

xml - 如何使用 XPath 在祖先或自身节点列表中查找最近的祖先

html - 通过它的 parent 的另一个 child 来获取 child

java - 如何在 testNG 文件中多次运行 SuiteTest

python - 使用一个函数来获取函数或常规属性的属性

vba - 如何通过Selenium和VBA根据html从第2行第2列中提取文本8

Selenium 错误 - 无法导航到无效的 URL

javascript - 获取元素颜色在 selenium javascript 中返回错误的颜色

javascript - 自定义属性仅适用于 element.getAttribute ("attribute") 但不适用于 "element.attribute"

javascript - 如何获取 HTML 标签的值(getAttribute 返回 NULL)