Selenium Web Driver - Span Div CSS dropdownframe - Невозможно щелкнуть элемент
У меня есть сложное веб-приложение, которое совместимо только с IE. Вот последовательность действий в пользовательском интерфейсе:
На странице есть несколько фреймов, из которых есть кнопка, которая при нажатии представляет набор параметров меню. И HTML для них, как показано ниже:
<div class="FWDropdownMenu" id="test_dropdown">
<div class="DropdownMenuFrame">
<table>
<tbody>
<tr>
<td>
<span class="eABCD" id="e1">
<div class="DropdownMenuItem" id="test2_dropdown" onclick=return eTop.Fire(1,this,event)">
<table>
<tbody>
<tr>
<td>
<div>Option 1</div>
</td>
</tbody>
</table>
</div>
Я хочу нажать на Вариант 1, поэтому я использовал это, чтобы найти элемент:
List<WebElement> options = driver.findElements(By.tagName("table")
.tagName("td").id("e1"));
Веб-драйвер может получить элемент, но не может щелкнуть по нему. Я получаю сообщение об ошибке, так как элемент не виден, но даже когда параметры отображаются на экране посредством щелчка по пунктам меню, я все равно не могу щелкнуть его.
Есть мысли / предложения?
2 ответа
Я нашел путь. Размещение здесь, поскольку это может помочь кому-либо в будущем:
WebElement element = driver.findElement(By.id("test2_dropdown"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", element);
Этот метод использует JavaScript, чтобы нажать кнопку. Из-за дизайна моего приложения я не мог щелкнуть по элементу через селен, но с помощью внутреннего javascript я смог успешно выполнить задачу.
Благодаря Stackru!
Мне кажется, вы не использовали правильный локатор элементов. По вашему вопросу вы хотите нажать на Option 1
и вы выбираете элемент по идентификатору e1
, который будет нажимать на элемент HTML ниже
<span class="eABCD" id="e1">
Я бы предпочел использовать простой локатор, как этот:
driver.findElement(By.xpath("//div[contains(text(),'Option 1')]")).click();