Watir でいくつかの HTML/Javascript ページを解析していますが、ドロップダウン メニュー内のサブテーブルの 2 つのリンクを区別するのに少し問題がありました。「概要」や「イベント」など、私のテーブル (変更できません) 内には、これの多くのインスタンスがあります。
<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
システムのリンクは、サブセクション内の最初の「概要」に直接移動します。(注: メイン メニュー アイコンは、[サーバー] -> [概要] ページへのリンクでもあります)。
私の問題は、Servers->Overview と Agents->Overview に関連するため、Overview を区別しようとしていることです。
存在を確認し、次のように 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
ただし、「contains」は評価であるため、これはエラーを生成します。これは、エージェントを含むリンクのページ全体をチェックします。これは問題になる可能性があります。
サブテーブルのすべてのリンクが「report-group-link」クラスであると考えると、最初の ID または参照名に基づいて 2 つのリンクを区別するにはどうすればよいでしょうか?