这是当前情况:特定位置有多个文件和文件夹。将鼠标悬停在文件或文件夹上后,会出现一个图标,然后您可以单击该图标,然后会出现一个菜单。从该菜单中,用户可以选择任何操作(重命名、移动等)。问题在于,每当在该位置创建/添加新文件/文件夹时,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。