<div>
<span>First line</span>
<p>Second line</p>
<span>Third line</span>
<p>Fourth line</p>
</div>
我的要求是到达div并找到div标签的子元素。
如果我使用css选择器作为div&gt; p:nth(0)和div&gt; p:nth(1),我将分别获得第1和第2个p标签,同样也可以应用于范围。
但是有一个关键字或方法可以在达到div标签后应用,并说(0)将得到我的第一个span标记,(1)将得到我的第一个p标记,说(2)将获得我的第二个标记,(3)将获得我的第二个标记。
我没有通过css定位器或xpath定位器实现此目的的方法。如果有办法请分享。
答案 0 :(得分:2)
是的,您可以获取子元素。您可以使用nth-child()
选择器来实现此目的。转到div
代码,然后使用nth-child()
。以下是一个例子。为简单起见,我假设您的div标签有id="myId"
,
因此,要获得第一个span
元素,请使用以下css选择器:
[id='myId'] :nth-child(1)
或
div#myId :nth-child(1)
或
#myId :nth-child(1)
适合你的情况。
注意: :nth-child(1)
同样,要获得第一个p
元素:
div#myId :nth-child(2)
并转到第二个span
元素:
div#myId :nth-child(3)
等
答案 1 :(得分:0)
你应该尝试使用XPath:
//div/*
这应该检索所有子元素。
答案 2 :(得分:0)
- 问题的第一个答案:您必须使用网络元素列表。
- 示例:List<WebElement> LstwebE = driver.findElements(By.xpath("//div/*"));
您可以通过这种方式使用所有元素:
LstwebE.get(0);
LstwebE.get(1);
LstwebE.get(2);
LstwebE.get(3);
LstwebE.get(0);
的结果:<span>First line</span>
额外备注: - 据我所知,你想找到兄弟元素。
Xpath将满足此要求。
首先获取元素并应用兄弟姐妹xpath:
有两种类型的兄弟姐妹:
<强> 1。前兄弟:前面的元素
获取示例代码并尝试使用此xpath作为前面的内容:
//div/p[1]/preceding-sibling::span
此xpath将找到第一个<p>
标记,然后找到其前一个span标记。
xpath的结果:<span>First line</span>
<强> 2。 follow-sibling:用于以下元素
获取示例代码并尝试使用此xpath进行以下操作:
//div/p[1]//following-sibling::span
此xpath首先找到第一个<p>
标记,然后转到以下范围
xpath的结果:<span>Third line</span>
//div[@class='xyz']/p[1]/preceding-sibling::span