0

我有一个复杂的顿悟网络应用程序,它只兼容 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 能够获取元素,但无法单击它。我收到错误,因为元素不可见,但即使通过单击菜单选项在屏幕上显示选项,我仍然无法单击它。

有什么想法/建议吗?

4

2 回答 2

1

我找到了一个方法。在这里发布,因为它可能会在未来帮助任何人:

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

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

感谢 Stackoverflow!

于 2015-05-27T17:37:30.560 回答
0

对我来说,您似乎没有使用正确的元素定位器。根据您要单击的问题Option 1,您正在按 id 选择元素e1。这将点击下面的html元素

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

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

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

于 2015-05-23T06:05:19.887 回答