Мне нужно выбрать элемент в раскрывающемся окне. Каждый раз, когда я открываю раскрывающееся окно на тестируемом сайте, веб-сайт случайным образом генерирует идентификатор для этого раскрывающегося окна. Предыдущие экземпляры выпадающего окна видны (с помощью 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>