如何在硒网络驱动程序中找到没有任何其他属性的span元素



我有一个完全基于HTML的报告。我正在尝试自动化并使用selenium网络驱动程序来查找元素。在其中一部分中,下面是HTML格式的

<tbody>  
<tr>
<td style="border: 1px solid #D1D1D1; background-color:#F4F4F4; color: #707070;padding :2px;">
<table style="width: 100%;
border-collapse: collapse; font-size: 15px;font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;" role="presentation"> 
<tbody><tr>
<!--Action Date -->
<td></td>
<td width="100%" valign="top" align="right">
<span style="font-size: 12px;">12/7/20 10:21 AM</span>
</td>
</tr>
<tr>
<!-- Name and status column -->
<td style="" width="25" valign="top" align="center">
<img src="images/qual_checkmark_24.png" alt="">
</td>
<td width="535">
<span>First line of <strong>TEXT</strong></span>
</td>
</tr>

</tbody></table>
</td>
</tr>
<tr>
<td style="border: 1px solid #D1D1D1; background-color:#F4F4F4; color: #707070;padding :2px;">
<table style="width: 100%;
border-collapse: collapse; font-size: 15px;font-family: Arial, 'Helvetica Neue', Helvetica, sans-serif;" role="presentation"> 

<tbody><tr>
<!--Action Date -->
<td></td>
<td width="100%" valign="top" align="right">
<span style="font-size: 12px;">12/7/20 10:18 AM</span>
</td>
</tr>
<tr>
<!-- Name and status column -->
<td style="" width="25" valign="top" align="center">
<img src="images/qual_arrowupcircleblue_24.png" alt="">
</td>
<td width="535">
<span>Second line of<strong>TEXT</strong></span>
</td>
</tr>     
</tbody>
</table>
</td>
</tr>
</tbody>

我想在span标签中找到我没有任何其他属性的文本(例如:第一行文本,第二行文本(。我尝试了通过xpath、cssSelector找到它的各种其他方法,但都不起作用。有人能帮忙吗?

尝试使用此XPath来选择不带属性的span节点:

//span[not(@*)]
//tbody/tr[2]/td/span

您可以使用父级作为引用,在您提供的html中,span位于tr下,tr是tbody的第二个元素。

//tbody/tr[2],将查找作为tbody的第二个子元素的所有元素,然后直接查找子元素td/span

两个答案的组合可能是最好的:

//tbody/tr/td/span[not(@*)]

它仍然很灵活,同时也不太容易出错。

有两组<span>标记。一个保存日期时间,例如12/7/20上午10:18,另一个保存文本,例如文本

要打印<span>标签文本的列表,您需要为visibilityOfAllElementsLocatedBy()引入WebDriverWait。您可以使用Java8stream()map(),还可以使用以下定位器策略之一:

  • xpath:

    List<String> myTexts = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath("//tbody//tr/td/table/tbody//tr//td/span[./strong]"))).stream().map(element->element.getText()).collect(Collectors.toList());
    System.out.println(myTexts);
    

相关内容

最新更新