Selenium点击不起作用,但鼠标没有

时间:2013-03-21 11:51:31

标签: html selenium automated-tests selenium-ide

任何人都可以解释为什么/如何在Selenium IDE中,对于我要点击的项目,click不起作用,但使用mouseOvermouseDown,{{1同一目标上的{}和mouseUp确实有效。我甚至试图使用上面的多个,例如:

mouseOut

当使用waitForElementPresent mouseDown mouseOver mouseDown click mouseOut 无法正常工作时,设法为我工作了。我似乎也没有得到任何错误,也不知道该怎么做。任何帮助表示赞赏。

更新
我点击了Selenium IDE中的 Find 按钮,它突出显示了上面所有6个命令的元素,但是当我运行任何命令或案例时,它实际上从未实际点击它。

5 个答案:

答案 0 :(得分:1)

点击那里有各种各样的实现, 有些人使用Javascript来监听鼠标按下事件,有些人使用鼠标按下鼠标或点击或鼠标悬停在div或td上它们实现为可点击元素然后JS开始工作并且你得到预期的点击动作,

因此,没有一个正确的事件你应该启动,而是测试它们或全部执行它们,

我使用以下命令,它适用于大多数无法使用简单“点击”命令的元素:

    <tr>
    <td>focus</td>
    <td>//div[@class='dhtmlx_wins_btns_button dhtmlx_button_close_over_pressed']</td>
    <td></td>
</tr>
<tr>
    <td>mouseOver</td>
    <td>//div[@class='dhtmlx_wins_btns_button dhtmlx_button_close_over_pressed']</td>
    <td></td>
</tr>
<tr>
    <td>mouseMoveAt</td>
    <td>//div[@class='dhtmlx_wins_btns_button dhtmlx_button_close_over_pressed']</td>
    <td></td>
</tr>
<tr>
    <td>mouseDown</td>
    <td>//div[@class='dhtmlx_wins_btns_button dhtmlx_button_close_over_pressed']</td>
    <td></td>
</tr>
<tr>
    <td>mouseDownAt</td>
    <td>//div[@class='dhtmlx_wins_btns_button dhtmlx_button_close_over_pressed']</td>
    <td></td>
</tr>
<tr>
    <td>clickAt</td>
    <td>//div[@class='dhtmlx_wins_btns_button dhtmlx_button_close_over_pressed']</td>
    <td>0,0</td>
</tr>

你可以尝试更多的事件,直到它工作,如果你仍然遇到问题,那么确保你的元素路径是正确的(使用selenium firefox IDE并在FireBug打开时按“查找”按钮,它将着色元素和它是带有黄色发光颜色的Html代码,因此您可以确保元素路径正确),

另一个技巧是右键单击元素并单击“等待文本...”并将该命令的路径复制到我之前说过的单击和其他命令

如果要隐藏的元素被隐藏(例如浮动图层html),那么您可以更改其属性display:none to display:block in the firebug(temporary),这样您就可以使用右键单击技巧来提取确切的路径

答案 1 :(得分:1)

如果您录制了&#34; Selenium Builder&#34;在具有iFrame的页面上的脚本,我不相信记录器将记录switchTo事件,即使鼠标访问它也没有问题。因此,在重放时,如果没有Selenium switchTo,除非您手动添加switchTo帧调用,否则selenium甚至无法单击该元素。

答案 2 :(得分:0)

尝试访问location_once_scrolled_into_view成员变量(例如,如下面的代码所示)。

ScrolledPosition = element.location_once_scrolled_into_view
element.click()

出于某种原因,即使您的代码实际上没有明确使用存储在那里的位置,这通常也会让点击工作。

答案 3 :(得分:0)

我能够让Selenium IDE点击该项目,即使它似乎不是正确的方法。下面是Selenium IDE的HTML。

<tr>
     <td>mouseDown</td>
     <td>css=div.dhtmlx_wins_btns_button.dhtmlx_button_close_default</td>
     <td></td>
</tr>
<tr>
     <td>clickAt</td>  
     <td>//div[@class='dhtmlx_wins_btns_button dhtmlx_button_close_over_pressed']</td>
     <td>0,0</td>
</tr> 

或者您可以使用//div[@class='dhtmlx_wins_btns_button dhtmlx_button_close_default']代替CSS定位器 如果某人有更好的方式来点击它,我仍然会感激,因为它似乎仍然是错误的方式。

答案 4 :(得分:0)

点击元素<td>时也遇到同样的问题。我使用方法selenium.clickAt(locator, coordString) f.e:

selenium.clickAt("element id - easily localized by firebug / firepath [firefox addon]","1.1");