我在我正在自动化的网站中为弹出对话框而苦苦挣扎,由于某种原因,它不会单击对话框中的按钮,而是可以与其他一切正常交互。它也可以毫无问题地识别按钮,当观看它运行时,我可以看到它似乎确实随着颜色的变化而单击了按钮,所以我有点卡住了。

我的代码最初看起来很明显:-

WebElement targetElement = waitforElement(threadSesh);
targetElement.click();

但是当我将其更改为以下内容时,一切似乎都可以正常工作!
WebElement targetElement = waitforElement(threadSesh);
Actions action = new Actions(threadSesh.driver);
action.click(targetElement);
action.perform();

谁能告诉我为什么一种方法行不通而另一种方法行得通吗?同样,不管是否有用,该网站都是使用twitter bootstrap构建的,尽管这样做没有什么区别,但是按钮本身却是非常基本的,就像这样。
<div class="modal hide fade in" style="width: 481px; margin-left: -241px; padding: 15px; display: block;" role="dialog" data-backdrop="static" data-keyboard="false" aria-hidden="false">
...
<div class="modal-footer">
<a id="save-EditDetails" class="btn btn-small btn-info" type="button" style="margin-right: 7px; padding-left: 15px; padding-right: 15px;" data-bind="click: ok" href="#">Save</a>
</div>
</div>

最佳答案

我不确定您的具体情况,但是WebElement click方法和Actions click方法之间有一些区别。 Actions的单击非常笨拙,它几乎只是将click事件发送到您传递的元素(位置)。它并不关心元素,它只是单击并向前移动,而webelement单击则是阻塞调用(并非总是要检查引用),并且它还具有先决条件,例如必须可见要单击的WebElement。同样,webElements的click是一个void方法,actions click返回对您正在使用的Actions的引用。有关更多信息,请检查herehere

编辑。
查看您发布的标记,这可能是完全错误的,因为我不是Bootstrap CSS的负责人,那里的modal hide fade in尤其是fade in部分看起来可疑。您确定在发送webelement.click()时,您的元素处于可点击状态吗?怎么了?没有什么?再说一次,如果单击 Action 确实有效,为什么不随它去呢,我的意思是,如果有什么用,为什么要解决呢?

关于twitter-bootstrap - Selenium webdriver click vs action.click有什么区别?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/23295483/

10-11 08:15
查看更多