我有一个链接文本,如上所示,我正在尝试使用以下方法找到并单击它,
driver.findElement(By.linkText("Front printer (Based on price list) – UPDATE")).click();
driver.findElement(By.partialLinkText("Front printer (Based on price list) – UPDATE1")).click();
链接文本是由 Excel 文件数据驱动的(上面只是为了显示我发布的原始链接文本是什么)
问题是每当它尝试搜索时都会显示 nosuchelementexception()
。由于链接文本被截断了一些字符。
我无法使用 xpath,因为该元素是动态的,它会不断更改其在列表网格中的位置,并且 id 会不断更改,因此请建议我需要选择链接文本或部分链接文本的方法。
HTML 代码是
<tr id="ctl00_ContentPlaceHolder1_RadGrid1_ctl00__0" class="rgRow">
< td align="left" style="width:3%;">
<td align="left" style="width:45%;">
<div style="float: left; width: 99%; overflow: hidden; height: 15px">
<a href="http://192.168.1.6/eprint_prod_3.8/settings/digital_press_add.aspx?type=edit& id=735" title="Front printer (Based on price list) - UPDATE">
<span id="ctl00_ContentPlaceHolder1_RadGrid1_ctl00_ctl04_lblGuillotineName" class="label_GV" style="display:inline-block;width:100%;">Front printer (Based on price list) - UPDATE</span>
</a>
</div>
</td>
<td align="left" style="width:52%;">
<td align="center" style="width:5%;">
<td align="center" style="width:10%;">
< /tr>
最佳答案
由于实际的链接文本被截断,因此使用子字符串进行搜索,至少使用获得唯一匹配所需的最小字符数。
请注意,使用 By.partialLinkText
时,您必须提供要搜索的部分文本,如下所示。
//assuming the below string is read from excel
String searchTxt = "Front printer (Based on price list) – ADD 1";
//try to search for the link using the first 30 chars
driver.findElement(By.partialLinkText(searchTxt.substring(0,30))).click();
上面的代码将返回它根据提供的部分文本找到的第一个匹配项。
关于java - 如何单击已被截断一部分的链接文本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22162937/