2

任何想法即使在焦点事件之后我如何触发模糊,这样它就不会发生“松散耦合”(动作被一一发送到硒服务器)。让我解释:

在 Selenium RC 中,您通过 fireEvent(locator, "blur") 和 fireEvent(locator, "focus") 触发模糊和焦点。但是,在将 blur 事件发送到浏览器之后,focus 事件不会直接跟随 javascript 命令堆栈中的 blur 事件。这是在以下情况下出现的问题:检测一组小部件的模糊,如一组文本框。

我做什么:所有文本框共享同一个侦听器,当发生模糊时,我简单地运行一个附加命令,检查焦点事件是否被其中一个文本框捕获,如果是,则忽略模糊。我在 javascript 中运行的这个附加命令会在所有等待命令运行后自动执行,在这种情况下,焦点命令是这些等待命令之一。

回到 Selenium RC:在 selenium 服务器触发 blur 事件后,它等待下一个命令,在这种情况下是焦点事件并将触发它。但是,正如您所理解的,与此同时,附加命令已经被触发,并且没有检测到新的焦点事件。因此,检测并处理了组模糊,但在这种情况下,模糊处理不正确,因为焦点不会在模糊之后直接触发,例如浏览器会这样做......

我希望你能理解我的问题,因为它有点难以解释。关于如何解决这个问题的任何想法?所以我可以测试正确的行为?(没有我的验证发生得太早,因为没有正确捕获组模糊)

我认为解决这个问题的方法是:向 Selenium 服务器发送一段 javascript,该服务器将被评估并在彼此之后触发这两个事件。还是不?...你会怎么做?

4

1 回答 1

2

我相信您正在寻找:

selenium.getEval("[我的 JavaScript 在这里]");

您可以发送您选择的 javascript 片段以供浏览器评估,这应该使您能够将焦点和模糊链接到一个命令中。

于 2011-04-08T10:44:23.667 回答