Javascript-生成的文本未被“$I->see”看到

Javascript-generated text not seen by "$I->see"

在目标页面上添加一些输入并按下按钮后,JS 脚本将 运行 导致(除其他外)页面内显示文本。

“$I->see”行是较长测试的最后一部分,到那时为止是成功的。

我在终端中不断收到的错误是:

Element located either by name, CSS or XPath element with was not found.

网页段落部分:

<div class="doc-remote-add" style="background-color: rgb(250, 255, 189); border-color: rgb(247, 218, 56);">
    <b>Important Delivery Info</b>
    <br/>
    The text I am searching for with codeception is here (no, there is no <p>).
</div>

如果不出意外,谁能写出像样的Locator配置方案?官方页面的 use \Codeception\Util\Locator; 并没有真正削减它。

您可以尝试从 DOM 中选择元素,出现异常:

try {
        $I->seeElement($selector);
    } catch (\Facebook\WebDriver\Exception\StaleElementReferenceException $e) {
        $selector = <reselect_element_from_DOM>;
        $I->seeElement($selector);
    }

谢谢,谢尔盖,但我找到了一个更简单的解决方案。

确实,主要问题是测试正在立即查找文本。解决这个问题的最简单和最优雅的方法是放置一个 $I->wait();在 see 命令之前,所以它是这样的

/* ...
rest of test
... */
$I->wait(3);
$I->see('text i wanna see');

你可以在这种情况下使用这个方法:

$I->waitForElement($element, $timeout = null);

方法等待元素出现在页面上。