ドロップダウン ウィンドウで要素を選択する必要があります。テストしているサイトでドロップダウン ウィンドウを開くたびに、Web サイトはそのドロップダウン ウィンドウの ID をランダムに生成します。ドロップダウン ウィンドウの以前のインスタンスは (Firebug を使用して) 表示されますが、選択することはできません。静的パスがありますが、ChromeDriver でテストした場合にのみ機能し、FirefoxDriver を使用した場合には機能しません。動的に生成された要素をクラス名 (ドロップダウン ウィンドウの各インスタンスには同じクラスがあります) で検索すると、最初に試したときに機能しますが、その後は ChromeDriver と FirefoxDriver の両方を使用して毎回エラーが発生します。その最初のインスタンスを見つけようとしている可能性がありますが、選択可能なインスタンスではありません。
動的なもののコードは次のとおりです。
driver.findElement(By.xpath("//div[@class='really long name for drop down menu']/ul/li[2]")).click();
そして、これが静的なものの私のコードです:
driver.findElement(By.xpath("//option[normalize-space(.)='Text']")).click();
動的 HTML は次のとおりです。
<html class="FakeName1" style="">
<body style="margin: 0px; background-color: rgb(219, 230, 244);">
<form id="Form1" action="MenuSelector.aspx?Ihopethisstuffisnotimportant" method="post">
<div id="Menu1384921" class="really long name for drop down menu" style="overflow-y: auto; width: 438px; height: 320px; position: absolute; visibility: hidden; left: 165px; top: 88px; display: none;">
<div id="Menu1092875" class="really long name for drop down menu" style="overflow-y: auto; width: 438px; height: 320px; position: absolute; visibility: visible; left: 165px; top: 88px;">
<ul>
<li unselectable="on"></li>
<li unselectable="on">Text</li>
</ul>
</div>
</body>
</html>
静的 HTML は次のとおりです。
<div id="ThingList" style="width:100%;">
<table id="Table1" style="margin: 0px; padding: 0px; width: 100%; border-spacing: 4px;">
<tbody>
<tr>
<td align="right" style="width: 20%; font-size: 9pt;">Select a Thing: </td>
<td>
<select id="bThings" class="bInput" style="width: 436px;" onchange="javascript:setTimeout('__doPostBack(\'bThings\',\'\')', 0)" name="bThings">
<option value=""></option>
<option value="2">Text</option>
</select>
</td>
</tr>
</tbody>
</table>
</div>