我正在通过 Watir 中的一些 HTML/Javascript 页面进行解析,并且在区分下拉菜单中子表上的两个链接时遇到了一些麻烦。我的表格中有很多这样的实例(我无法更改),例如“概述”和“事件”。
<td class="nav-td-content-submenu wide-text smaller-text" valign="top">
<a href="javascript: menuManager.check('/Manager/navigate?menuID=system_overview');"
class="report-group-toggle"
style="color:black"
id="report_group_servers"> Servers
</a>
<a href="javascript: menuManager.check('/Manager/navigate?menuID==system_overview');"
title="Overview"
class="report-group-link">
<div>Overview</div>
</a>
<a href="javascript: menuManager.check('/Manager/SavedReportExec.do?value(reportID)=61&value(menuID)=system.1');"
title="Events"
class="report-group-link">
<div>Events</div>
</a>
<a href="javascript: menuManager.check('/Manager/navigate?menuID=alerts');"
title="Alerts"
class="report-group-link">
<div>Alerts</div>
</a>
<a href="javascript: menuManager.check('/Manager/navigate?menuID=logs');"
title="Logs"
class="report-group-link">
<div>Logs</div>
</a>
<a href="javascript: menuManager.check('/Manager/SavedReportExec.do?value(reportID)=62&value(menuID)=agent.1');"
class="report-group-toggle"
style="color:black"
id="report_group_agents"> Agents
</a>
<a href="javascript: menuManager.check('/Manager/SavedReportExec.do?value(reportID)=62&value(menuID)=agent.1');"
title="Overview"
class="report-group-link">
<div>Overview</div>
</a>
<a href="javascript: menuManager.check('/Manager/SavedReportExec.do?value(reportID)=63&value(menuID)=agent.2');"
title="Events"
class="report-group-link">
<div>Events</div>
</a>
<a href="javascript: menuManager.check('/Manager/navigate?menuID=application_monitoring');"
title="Application Monitoring"
class="report-group-link">
<div>Application Monitoring</div>
</a>
下拉菜单如下所示:
Servers
- Overview
- Events
- Alerts
- Logs
Agents
- Overview
- Events
- Application Monitoring
System 的链接直接导航到该小节中的第一个“概述”。(注意:主菜单图标也是 Servers->Overviews 页面的链接)。
我的问题是我试图区分概述,因为它与服务器-> 概述和代理-> 概述有关。
我可以检查是否存在并导航到 Servers->Overview,如下所示:
if $browser.link(:id => 'report_group_servers').exists?
if $browser.link(:id => 'report_group_servers').exists?
if $browser.link(:title => 'Overview').exists?
$browser.link(:title => 'Overview').click
end
end
end
但是,即使我尝试访问 Agents->Overview,我仍在导航到 Servers->Overview,所以我尝试:
if $browser.link(:id => 'report_group_agents').exists?
if $browser.link(:id => 'report_group_agents').exists?
if $browser.link(:title => 'Overview', :id => 'report_group_agents').exists?
$browser.link(:title => 'Overview', :id => 'report_group_agents').click
end
end
end
在尝试只查看表的主链接(因为服务器链接到服务器->概述和代理链接到代理->概述)我还尝试选择包含“代理”的链接:
if $browser.link(:xpath, "//a[contains(.,'Agents')]/")
$browser.link(:xpath, "//a[contains(.,'Agents')]/").click
end
然而,这会产生一个错误,因为“包含”是一个评估,这会检查整个页面是否有任何包含代理的链接——这可能是有问题的。
考虑到子表的所有链接都属于“report-group-link”类,我如何能够根据第一个 ID 或参考名称区分这两个链接?