我使用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"> </span>
</td>
<td><a class="CatalogActionLink" href="javascript:void(null)">Edit</a></td>
<td><span class="CatalogActionLinkSeparator"> </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() + "')]"));
答案 0 :(得分:2)
试试这个xpath - "//span[.='Top 5 Item Exception Types']//ancestor::tr/following-sibling::tr//a[.='Open']"
答案 1 :(得分:2)
试试这个:
//span[text()='Top 5 Item Exception Types']/ancestor::tr/following-sibling::tr/descendant::a[text()='Open']
答案 2 :(得分:2)
@ Grasshopper和@cruisepandey的答案都很好(+1)。这只是一个相对较短的版本:
//tr[.//span='Top 5 Item Exception Types']/following-sibling::tr//a[.='Open']
答案 3 :(得分:1)
使用文字识别 WebElement ,例如关于 WebElement 的打开,修改或更多,文字为前5项违例类型您可以编写一个接受参考文本的函数,即前5个项目例外类型和所需的操作(即打开 ,编辑或更多)作为输入参数,并按如下方式找到相关的 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")
答案 4 :(得分:0)
您可以尝试使用此xpath,它会找到您的文本然后返回几个级别,然后再次搜索特定的“a”元素。
//td/span[contains(text(),'Top 5 Item Exception Types')]/../../..//td/a[text()='Open']