これが現在の状況です。特定の場所にいくつかのファイルとフォルダーがあります。ファイルまたはフォルダにカーソルを合わせると、アイコンが表示され、そのアイコンをクリックするとメニューが表示されます。そのメニューから、ユーザーは任意のアクション (名前の変更、移動など) を選択できます。問題は、その場所に新しいファイル/フォルダーが作成/追加されるたびに、FirePath によって提供される XPath が壊れることです。
これは、XPath が壊れるまで問題なく動作するコードの最初の行です。
webDriver.findElement(By.xpath("//*[@id='main_files_view']/ol/li[6]/ul/li[4]")).click();
その場所に新しいアイテムが追加されるたびに、値が「6」のインデックスが「7」(ファイルの新しい位置) に変更される可能性があり、生成される XPath はわずかに異なります。
webDriver.findElement(By.xpath("//*[@id='main_files_view']/ol/li[7]/ul/li[4]")).click();
その XPath を変更して堅牢にして、追加/削除されたアイテムの数に関係なく、XPath が壊れないようにするにはどうすればよいですか?
以下は、FirePath が提供する XPath に関連する HTML のセクションです。XPath が提供されると、最後のクラスも強調表示されます。
<li class="storage_item document file_object even ui-draggable" data-thumb-translation="Translated" data-possible-actions="Rename Delete Share Move View" data-file-size="0 bytes" data-item-type="file" data-display-name="solids_A" data-name="solids_A.raas" data-id="bd48453c752043d98afb237b86ee88a3">
<a class="file_name" href="#/Item/Details?id=bd48453c752043d98afb237b86ee88a3&itemtype=File&tab=Default">
<img class="file_list_icon" width="16" height="16" src="https://api-staging.autodesk.com/content/gateway/2013.1.307595.626/z/Content/images/fileIcons/small/raas.png"/>
<div class="name_container">
<ul class="tools">
<li class="preview_trigger"/>
<li class="comment_balloon none has_tooltip" data-tooltip-contents="#comment_balloon_tooltip" data-comments="0">
<li class="categorize action has_tooltip" data-tooltip="Categories"/>
<li class="document_tools has_tooltip" data-tooltip="Actions"/>
</ul>
</li>
Eclipse IDE で Selenium 2.0 を使用しています。