5

任何人都可以解释为什么/如何在 Selenium IDE 中,对于我想要单击的项目,click它不起作用,但是在同一个TargetmouseOver上使用、mouseDown和确实有效。我什至尝试使用上述多个,例如:mouseUpmouseOut

waitForElementPresent
mouseDown
mouseOver
mouseDown
click
mouseOut

当使用不起作用时,这设法在其他方面为我click工作。我似乎也没有收到任何错误,也不知道该怎么做。任何帮助表示赞赏。

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

4

5 回答 5

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 更改为 display:block,这样您就可以使用右键单击技巧来提取确切的路径

于 2014-03-28T12:19:16.273 回答
1

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

于 2014-03-28T20:44:11.523 回答
0

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

ScrolledPosition = element.location_once_scrolled_into_view
element.click()

出于某种原因,即使您的代码实际上并未明确使用存储在那里的位置,这通常也允许单击工作。

于 2013-03-21T16:27:23.043 回答
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 定位器来代替。
如果有人有比这更好的点击方式,我仍然会很感激,因为这似乎仍然是错误的方式。

于 2013-03-25T14:53:46.240 回答
0

点击 element 也有同样的问题<td>。我使用了方法selenium.clickAt(locator, coordString) fe:

selenium.clickAt("element id - easily localized by firebug / firepath [firefox addon]","1.1");
于 2013-04-08T09:42:33.947 回答