Codeception ->see("String") 失败但 ->seeInSource("String") 成功

Codeception ->see("String") fails but ->seeInSource("String") succeeds

我的 AcceptanceTester->see() 方法有问题。它看不到源代码中明显存在的内容,如 AcceptanceTester->seeInSource() 方法所示。

这是我的测试,它在 Codeception 的 WP-Browser 实现中的 PHPBrowser 中运行:

    public function testAfricaIsVisible(AcceptanceTester $I) {
        $I->amOnPage('/');
        $I->seeResponseCodeIs(200);
        $I->seeInSource('Africa');
        $I->see('Africa');
    }

这是我得到的结果:

如您所见,->SeeInSource("Africa") 有效,但 ->see("Africa") 失败。

我理解 ->SeeInSource() sometimes "sees" things that ->see() doesn't,但在这种情况下,“非洲”一词是 link 文本,应用或不应用 strip_tags() 都应该清晰可见。

在这种情况下,当我打开 Html link 时,“非洲”一词清晰可见:

有人知道为什么 Codeception 没有 ->see() 这篇文章吗?

我明白了。对于有类似问题的任何人,根本问题是格式错误的 HTML,被 Chrome/Firefox 掩盖了,但正如 Phpbrowser 所看到的那样搞砸了网站。我敢打赌,如果我改用 WebDriver 模块,它会起作用。

解决方案:使用HTML验证工具并修复报告的语法错误。

在这种情况下,它是一个带有单引号的 title 标签,例如title='doesn't'