我的页面中有很多链接。其中包含文字"添加policyhoder" ,一个带有文字"添加"只有和另一个"添加PP"。我需要点击文字链接。我使用下面的代码点击文字链接为"添加"只是点击第一个链接"添加"在其文本中,即""添加PP"在屏幕上提供。请帮助
Driver.findElement(By.linkText("Add"));
我的要求是点击具有完全文字匹配的链接。例如"添加"此处
<td width="100%" colspan="7">
<table width="100%" cellspacing="0" cellpadding="1" valign="bottom">
<input id="hidPoClaim" type="hidden" onblur="ResetScript(this);" onfocus="HighlightScript(this);" value=" PolicySummary " callfunction="" size="" name="/Root/ACORD/InsuranceSvcRs/com.c_HomePolicyInquiryRs/co.cc_AvailableFunctions[com._FunctionName='PoSummary' and com.csc_FunctionName[@Action='ShowPolicyClaims']]">
<tbody>
<tr>
<td width="25%" valign="bottom" colspan="1">
<strong>
<font class="flabel">Policy Claims History:</font>
</strong>
</td>
<td width="20%" valign="bottom" colspan="1">
<font class="flabel"> </font>
<a class="fLabel" onclick="INFCaptureControlID(this); DoLink('POLICYLOSS','','ADD' );return false; " onblur="ResetScript(this);return true;" onfocus="HighlightScript(this);" delimiter="|" screenaction="ADD" href="" screen="Y" objecttype="POLICYLOSS" type="Link" context="Screen">**Add**</a>
</td>
<td width="20%" valign="bottom" colspan="1">
<td align="Center" width="15%" valign="bottom" colspan="1">
<td width="20%" colspan="1">
</tr>
</tbody>
</table
由于 开发
答案 0 :(得分:2)
如果有2个元素,单词&#34; Add&#34;,那么尝试这样的事情:
List<WebElement> list = driver.findElements(By.linkText("Add"));
list.get(1).click();
要通过搜索确切的文本来查找元素,那么使用xpath会更有帮助。
// For "Add" link, according to the HTML you've added to the question
driver.findElement(By.xpath("//a[text()='**Add**']")).click();
答案 1 :(得分:0)
我假设因为当您点击第一个链接时,它会在同一个标签页中打开该链接页面,并且在页面更改时无法找到第二个链接元素,因此您必须在新标签页中打开该链接页面。
我认为你的代码是:
String Newtab = Keys.chord(Keys.CONTROL,Keys.RETURN);
driver.findElement(By.linkText("Add policyhoder")).sendKeys(Newtab);
driver.findElement(By.linkText("Add")).click();
现在上面的代码对您有用。
答案 2 :(得分:0)
您可以尝试使用
driver.findElement(By.xpath("//a[text()='Add']"));
这将与您的确切文本匹配