我是硒的新手,并且编码经验很少。话虽这么说,我正在尝试为我的软件设置一套回归测试。在进行测试以添加和保存新的联系人和信息时遇到问题,然后立即删除联系人(只是为了确保软件的任何新增功能都不会破坏该功能)。我的联系人被保存到第一列中的名称,第二列中的详细信息,第三列中的编辑链接,第四列中的删除链接,以及第五列中的联系人链接。在我设置测试后,一切正常,但IDE会指定要用xpath单击的删除链接,因此如果我在测试联系人之前添加另一个联系人,则会删除错误的联系人。如何定位测试联系人行中的删除链接,以便搜索文本"测试联系人"并且每次都单击同一行中的删除链接,即使我已更改表中联系人的顺序或添加了许多新联系人?下面是表格中一行的示例。我需要根据该行中的名称选择删除。
<table class="tbl">
<thead>
<tbody>
<tr>
<td>
<a class="entityLink" target="_attached" href="../download/Average+Inspection.xlam?documentID=55840"> Average Inspection.xlam </a>
</td>
<td></td>
<td>43.76 Kb</td>
<td>SP: Randi kay Anderson</td>
<td>5/16/14 1:13 PM</td>
<td> No </td>
<td>
<ul class="actlinks llink">
<li>
<a class="al-assign" target="_top" href="/app/admin/massAssignFiles.do?m=massAssignSLFileAttachment&returnPage=BACK_ADMIN_SEARCH_UPLOADEDFILE&documentID=55840"> Assign </a>
</li>
<li>
<a class="al-delete" onclick="return myConfirm();" href="/app/admin/manageFiles.do?m=deleteFile&documentID=55840">Delete</a>
</li>
<li>
<a class="al-edit" href="/app/admin/manageFiles.do?m=editFile&fileid=55840">Edit</a>
</li>
<li>
<a class="al-edit" target="_top" href="sharingPermissions.do?m=editFileSharingPermissions&returnPage=BACK_ADMIN_SEARCH_UPLOADEDFILE&fileID=55840">Edit Sharing Permissions</a>
</li>
</ul>
</td>
</tr>
答案 0 :(得分:0)
我的感觉,表格的条目之间应该有一些独特性。所以你应该使用那个独特的属性来定位和执行你所需要的元素。
通过查看上表,我假设?documentID=55840
是每个表的唯一属性,您可以使用它来定位所需的元素。您必须在代码中添加的唯一内容是,在添加新条目后,您的代码应该能够获得新添加条目的documentId
。
您可以按以下步骤执行此操作:
使用文档Id找到删除元素
// Given text should be dynamic to make it generic
String hrefOfElememnt = driver.findElement(By.xpath("//a[contains(text(),'Average Inspection.xlam')]")).getAttribute("href");
String[] hrefArray= hrefOfElememnt .split("?");
String[] documentIdArray = hrefArray[1].split("=");
String documentId = documentIdArray [1];
// To find delete button
WebElement deleteLink = driver.findElement(By.xpath("//a[@class='al-delete' and contains(@href,'"+ documentId +"')]"));
deleteLink.click();
答案 1 :(得分:0)
使用此
命令 - 单击 target- xpath = // * [text()=“要点击的文字”]
我用它,这将解决你的问题