2

我正在使用 Java Selenium 根据标题作为输入打开链接。我有以下 HTML 部分,其中Top 5 Item Exception Types是我需要查找的标题,其超链接<a class="CatalogActionLink" href="javascript:void(null)">Open</a>位于<tr><td><span>其兄弟标签旁边的另一个标签中<tr><td><span>。如何Open通过搜索标题找到元素超链接Top 5 Item Exception Types

<table cellspacing="4" cellpadding="0" border="0">
    <tbody>
        <tr>
            <td class="CatalogObjectListItemIcon" rowspan="2"><img src="/analytics/res/sk_blafp/catalog/obj_request_b.png" alt="Analysis" title="Analysis"></td>
            <td><span class="CatalogObjectListItemTitle">Top 5 Item Exception Types</span>
                <span class="CatalogObjectListItemLastModifiedTime">Last Modified 2/15/2018 12:39:45 PM</span>
                <span class="CatalogObjectListItemOwner">Owner System Account</span>
            </td>
        </tr>
        <tr>
            <td>
                <table cellspacing="0" cellpadding="0">
                    <tbody>
                        <tr>
                            <td><a class="CatalogActionLink" href="javascript:void(null)">Open</a></td>
                            <td><span class="CatalogActionLinkSeparator">&nbsp;</span>
                            </td>
                            <td><a class="CatalogActionLink" href="javascript:void(null)">Edit</a></td>
                            <td><span class="CatalogActionLinkSeparator">&nbsp;</span>
                            </td>
                            <td><a class="CatalogActionLink" href="javascript:void(null)" title="Click to see more actions of Top 5 Item Exception Types">More<img border="0" src="/analytics/res/s_FusionFX/uicomponents/obips.UberBar/dropdown_n.png" alt="Dropdown menu">
                            </a></td>
                        </tr>
                    </tbody>
                </table>
            </td>
        </tr>
    </tbody>
</table>

我可以使用以下内容找到标题

WebElement reportElement = driver.findElement(
                    By.xpath("//span[contains(translate(text(), 'ABCDEFGHIJKLMNOPQRSTUVWXYZ', 'abcdefghijklmnopqrstuvwxyz'),'"
                            + reportName.toLowerCase() + "')]"));
4

5 回答 5

2

试试这个 xpath——"//span[.='Top 5 Item Exception Types']//ancestor::tr/following-sibling::tr//a[.='Open']"

于 2018-05-03T07:14:24.340 回答
2

尝试这个 :

//span[text()='Top 5 Item Exception Types']/ancestor::tr/following-sibling::tr/descendant::a[text()='Open']
于 2018-05-03T07:14:39.100 回答
2

@Grasshopper 和 @cruisepandey 的答案都很好 (+1)。这只是一个较短的版本:

//tr[.//span='Top 5 Item Exception Types']/following-sibling::tr//a[.='Open']
于 2018-05-03T08:05:40.853 回答
1

要使用文本识别WebElement,例如OpenEditMore,相对于文本作为Top 5 Item Exception Types的WebElement ,您可以编写一个函数,该函数将接受参考文本,即Top 5 Item Exception Types和所需的操作(即OpenEditMore)作为输入参数并找到相关的WebElement,如下所示:

public void clickOperation(String title, String operation)
{
    WebElement opsLink = driver.findElement(By.xpath("//td/span[.='" + title + "']//following::tr[1]/td/table/tbody/tr//td/a[@class='CatalogActionLink'][.='" + operation + "']"));
}

您可以调用该函数clickOperation()以及参考文本,即前 5 个项目异常类型和所需的操作作为String脚本中任何位置的参数,以识别相应的前 5 个项目异常类型项目的相关链接 WebElement ,如下所示:

clickOperation("Top 5 Item Exception Types","Open")
// or
clickOperation("Top 5 Item Exception Types","Edit")
// or
clickOperation("Top 5 Item Exception Types","More")
于 2018-05-03T07:47:40.360 回答
0

你可以试试这个 xpath,它会找到你的文本,然后返回几个级别,然后再次搜索特定的“a”元素。

//td/span[contains(text(),'Top 5 Item Exception Types')]/../../..//td/a[text()='Open']
于 2018-05-03T09:19:59.940 回答