li要素内にあるリンクをセレンでクリックしようとしています。これは、while ループ内で発生しています。クリックは、Firefox ウィンドウのレベルより下にある li に到達するまで機能しています。セレンがクリックを試行する前に Firefox Webdriver ウィンドウを手動で下にスクロールすると、クリックはエラーなしで機能します。
クリックに使用しているJavaコードは次のとおりです。Menu_item_module は、ループが実行されてリストを下に移動するたびに 1 ずつ増加する int です。以下の web 要素は、li 要素を参照しています。
driver.findElement(By.id("digitalVellum_dijit_MenuListItem_" + menu_item_module)).click();
問題のページの li 要素の 1 つを含むコード スニペットを次に示します。
<li id="digitalVellum_dijit_MenuListItem_11" class="dijitLayoutContainer dijitContainer menuListItem level1 item-22 closed dijitLayoutContainer-child dijitLayoutContainer-dijitLayoutContainer" data-dojo-attach-event="onclick:click" data-dojo-attach-point="containerNode" widgetid="digitalVellum_dijit_MenuListItem_11">
<a href="#" data-dojo-attach-point="_link" tabindex="0">
<span class="expander" data-dojo-attach-event="onclick:_toggleState"></span>
<span class="label">Overview</span>
<div class="clearoutfloats"> </div>
</a>
<ul id="digitalVellum_dijit_MenuList_2" class="mainMenu dijitLayoutContainer dijitContainer dijitLayoutContainer-child dijitLayoutContainer-dijitLayoutContainer" data-dojo-attach-point="containerNode" widgetid="digitalVellum_dijit_MenuList_2">
</li>
次のコードを使用して、セレンのスクロールを試みました。
JavascriptExecutor jsx = (JavascriptExecutor)driver;
jsx.executeScript("window.scrollBy(0,100)", "");
これは効果がないようです。スクロール領域がページ全体ではなくフレームであるためだと思います。とにかく、スクロールする必要はまったくないと思いました。要素を選択する必要がある場合、webdriver は自動的にスクロールすると思いました。
どんな助けや洞察も大歓迎です。
ありがとう、スティーブ・アーチボルド