我有一个链接文本,如上所示我想找到并点击它,使用,
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会不断变化,所以请建议一种方法,我需要选择linktext或partiallinktext元素。
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>
答案 0 :(得分:2)
由于实际链接文本被截断,因此使用至少使用获得唯一匹配所需的最少字符数的子字符串进行搜索。
请注意,对于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();
上面的代码将根据提供的部分文本返回它找到的第一个匹配项。