根据selenium IDE 2中行中的其他文本,单击表中的链接

时间:2014-05-23 20:58:56

标签: xpath selenium-webdriver

我是硒的新手,并且编码经验很少。话虽这么说,我正在尝试为我的软件设置一套回归测试。在进行测试以添加和保存新的联系人和信息时遇到问题,然后立即删除联系人(只是为了确保软件的任何新增功能都不会破坏该功能)。我的联系人被保存到第一列中的名称,第二列中的详细信息,第三列中的编辑链接,第四列中的删除链接,以及第五列中的联系人链接。在我设置测试后,一切正常,但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>

2 个答案:

答案 0 :(得分:0)

我的感觉,表格的条目之间应该有一些独特性。所以你应该使用那个独特的属性来定位和执行你所需要的元素。

通过查看上表,我假设?documentID=55840是每个表的唯一属性,您可以使用它来定位所需的元素。您必须在代码中添加的唯一内容是,在添加新条目后,您的代码应该能够获得新添加条目的documentId

您可以按以下步骤执行此操作:

  • 添加新条目
  • 获取新添加条目的文档ID
  • 使用文档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()=“要点击的文字”]

我用它,这将解决你的问题