无法点击操作链接

时间:2018-01-04 20:38:39

标签: java selenium selenium-chromedriver

我有一个包含多行的页面,每个行都有一个链接,"添加租户信息"但我似乎无法以每行独有的方式点击它。我已经能够选择

采取行动
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&nbsp;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;但我需要迭代所有这些并点击每一个。

4 个答案:

答案 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