当运行硒测试时,当火狐窗口不在焦点上时,Onblur 事件触发会变得混乱

Onblur event firing gets messed up when firefox window is not in focus while running a selenium test

本文关键字:混乱 事件 Onblur 测试 运行 火狐 窗口 焦点      更新时间:2023-09-26

>我有一个表格,我检查 2 个密码是否相等。确认密码字段使用 onblur 事件来检查键入的内容是否等于密码字段。手动测试时一切正常。通过自动硒测试,如果我将焦点放在浏览器上,它也可以工作。这并不总是可能的,因为我有时必须运行并行测试。每当焦点丢失时,验证都会失败。我尝试使用以下行来触发 onblur 事件

public void triggerBlurEventById(String id)
    {
        ((JavascriptExecutor) WebDriverHelper.getDriver())
                .executeScript("document.getElementById('" + id + "').blur();");
    }
但该事件似乎从未被解雇。即使我在浏览器控制台的文本字段上触发了 blur 事件,直到我单击文本字段并再次在控制台上运行命令,它才会被调用。不知道我怎样才能让硒正确触发事件。

这可能不适用于您的情况,但我所做的一种似乎有效的解决方法,至少对于焦点而言,是执行脚本两次。这实际上是我的代码中的内容:

    ((JavascriptExecutor) driverHelper.getDriver()).executeScript("$(arguments[0]).focus();", element);
    ((JavascriptExecutor) driverHelper.getDriver()).executeScript("$(arguments[0]).focus();", element);

从理论上讲,您还应该能够使用这样的东西:

new Actions(driverHelper.getDriver()).moveToElement(element).click().build().perform();

我在操作方面也遇到了一些间歇性问题,尤其是在进行开发工作时,除非浏览器窗口是主动选择的窗口,否则操作将无法正确发生。