Selenium Web Driver - Span Div CSS dropdownframe - 无法单击该元素

时间:2015-05-22 20:43:12

标签: java css selenium selenium-webdriver epiphany

我有一个复杂的顿悟网络应用程序,它只与IE兼容。以下是UI上的操作序列:

该页面有多个框架,其中有一个按钮,当单击时会显示一组菜单选项。他们的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"));    

Webdriver能够获取元素,但无法单击它。由于元素不可见,我收到错误,但即使通过点击菜单选项在屏幕上显示选项,我仍然无法点击它。

有任何想法/建议吗?

2 个答案:

答案 0 :(得分:1)

我发现了一种方法。在此发布,因为它可能在将来帮助任何人:

WebElement element = driver.findElement(By.id("test2_dropdown"));
JavascriptExecutor executor = (JavascriptExecutor)driver;
executor.executeScript("arguments[0].click();", element);

此方法使用javascript单击按钮。由于我的应用程序的设计,我无法通过selenium单击元素,但使用内部JavaScript,我能够成功完成任务。

感谢Stackoverflow !!

答案 1 :(得分:0)

对我而言,您似乎没有使用正确的元素定位器。根据您的问题,您要点击Option 1,然后按ID e1选择元素。这将点击下面的html元素

<span class="eABCD" id="e1">

我更喜欢使用这样的简单定位器:

driver.findElement(By.xpath("//div[contains(text(),'Option 1')]")).click();