我有一个包含多行的页面,每个行都有一个链接,"添加租户信息"但我似乎无法以每行独有的方式点击它。我已经能够选择
采取行动driver.findElement(By.cssSelector("a[class*='sf-with-ul']"));
以下是该部分的HTML:
<tr class="false sub_row data_row highlight" id="spreadsheet_row_7117098" style="">
<td style="background-color: rgb(232, 245, 209);">Tenant 1 Name</td>
<td style="background-color: rgb(232, 245, 209);"><a class="action-link">Add Tenant Info</a></td>
<td style="text-align: center; padding-left: 10px; padding-right: 10px; background-color: rgb(232, 245, 209);"> <span></span> </td>
<td style="background-color: rgb(232, 245, 209);"><a class="action-link">Add Lease</a></td>
<td style="width: 84px; padding: 0px; background-color: rgb(232, 245, 209);">
<div style="">
<ul class="sf-menu sf-js-enabled sf-arrows">
<li><a class="sf-with-ul">Take Actions</a>
<ul>
<li><a class="action-link">Add Tenant Info</a></li>
<li><a class="action-link">Tenant Screening Center</a></li>
<li><a class="action-link">Delete Tenant</a></li>
</ul>
</li>
</ul>
</div>
</td>
</tr>
我正在使用chrome驱动程序和selenium 3.8.1
编辑:
导航到此站点simplifyem.com
使用
登录user: stackoverflow@gmail.com
pass: password
然后导航至http://www.simplifyem.com/tenant_management/overview
我想点击&#34;添加租户信息&#34;但我需要迭代所有这些并点击每一个。
答案 0 :(得分:0)
您是否尝试过使用其他xpath? 您可以尝试执行以下操作:
driver.findElement(By.xpath("//li[@class='sf-with-ul']"));
Chrome驱动程序:2.33.5
Selenium:3.4
Chrome浏览器62.0
答案 1 :(得分:0)
您可以使用By.linkText("Add Tenant Info")
。我试了一下,效果很好。
List<WebElement> links = driver.findElements(By.linkText("Add Tenant Info"));
System.out.println(links.size());
答案 2 :(得分:0)
这个怎么样:
List<WebElement> links = driver.findElements(By.xpath("//td/a[@class='action-link' and contains(text(),'Add Tenant Info')]"));
for (int x=0; x<links.size; x++) {
driver.findElement(By.xpath("(//td/a[@class='action-link' and contains(text(),'Add Tenant Info')])[x]")).click();
//do other stuff
//go back to original page
}
请记住,您必须返回原始页面才能点击链接。 此外,您不能只迭代之前获得的webelements列表,因为通过单击链接并导航到另一个页面,您基本上就会使您获得的Web元素到期。因此,当您返回原始页面并尝试单击列表中的Web元素时,它会说该元素已过期。
已编辑:刚刚查看了您提供的网络应用
答案 3 :(得分:0)
根据您问题中HTML
的{{1}},存在多个URL
个链接。要迭代所有这些并单击每个,您可以使用以下代码块:
Add Tenant Info