如何找到CSS定位器来查找文本" 26 Todman Ave Kensington"
当我做dd时:class =' .pickup.ng-binding'我得到上面的以及下面包含日期和时间的行。
我只需获得第1行
答案 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]
,依此类推,直至找到所需的文字。