CSS元素定位器

时间:2015-02-16 03:32:15

标签: java selenium-webdriver css-selectors

如何找到CSS定位器来查找文本" 26 Todman Ave Kensington"

当我做dd时:class =' .pickup.ng-binding'我得到上面的以及下面包含日期和时间的行。

我只需获得第1行enter image description here

3 个答案:

答案 0 :(得分:1)

根据您的标记(如果我理解正确的话),这是您需要的选择器:

.pickup.ng-binding > i:first-of-type

现在,您正在.pickup.ng-binding'中选择所有内容。您似乎想要的是使用属性first-of-type来获取第一个i,在这种情况下是26 Todman Ave Kensington。

编辑:我刚刚看到了#34; 26 Todman Ave Kensington"未包含在i class="fa fa-map-marker中。现在你的问题让我完全糊涂了。

答案 1 :(得分:0)

我认为您可以尝试使用<p>标记包装第一行。因此,您可以使用.pickup.ng-binding > p

选择它们

答案 2 :(得分:0)

您尝试在dd.pickup.ng-binding内获取其中一个子文本节点,该节点不在i元素中,而是直接在dd元素中。这不能仅使用CSS选择器直接实现,因为选择器只查看元素节点,而不是文本节点。您可能只需像您一样选择dd本身,但您需要getText()然后解析它并提取您需要的部分,这很麻烦。< / p>

我建议使用XPath,它允许您直接选择单个文本节点,而不必担心解析可能是任意文本的内容:

driver.findElement(By.xpath("//dd[@class='pickup ng-binding']/text()[1]"));

取决于实际标记的样子(你拥有的是DOM树视图),如果text()[1]没有得到任何东西它可能是元素间的空白;尝试text()[2],依此类推,直至找到所需的文字。