我试图在 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/