Codeception:检查元素是否有焦点?

Codeception: Check if element has focus?

有没有办法断言某个元素(例如输入或 link)具有键盘焦点?我正在使用 Codeception 和 Selenium。在 http://codeception.com/docs/modules/WebDriver

上找不到任何内容

一个可靠的消息来源告诉我这个有效:

$I->executeJS('return $("#element").is(":focus")');

测试愉快!

的更多详细信息

在您的 acceptance.suite.yml:

中激活 Codeception 的 Asserts Module
modules:
    enabled:
        # ...
        - Asserts

然后在验收测试中使用它:

$focus = $I->executeJS('return $("#element").is(":focus")');
$I->assertEquals(true, $focus);

适用于 Firefox 和 Chrome(通过 Selenium)。但是,它不适用于 PhantomJS - 请参阅此问题:https://github.com/ariya/phantomjs/issues/10427

完成@sunomad 的回答。 如果您使用代码行:

$I->executeJS('return $("#element").is(":focus")');

您遇到此错误:

[Facebook\WebDriver\Exception\UnknownServerException] unknown error: $ is not a function

$ 切换为 jQuery

$I->executeJS('return jQuery("#element").is(":focus")');

而且有效!