2

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

在硒中,我正在使用 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//class | cardLogo .

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()但它一直出错,那里有什么想法吗?

4

2 回答 2

4

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

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

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

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

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

//div[tokenize(@class, ' ') = ("LOGO1", "LOGO2")]
于 2013-06-25T18:15:24.347 回答
0

旧帖子,但我会提出我用过的解决方案,以防万一它可以帮助任何人。

xpath=//div[contains(@class,'carouselNavNext ')]/.[contains(@class, 'disabled')]

触发您的包含,然后/.检查子元素和当前元素。

于 2013-09-24T09:49:31.617 回答