Javascript-生成的文本未被“$I->see”看到
Javascript-generated text not seen by "$I->see"
在目标页面上添加一些输入并按下按钮后,JS 脚本将 运行 导致(除其他外)页面内显示文本。
“$I->see”行是较长测试的最后一部分,到那时为止是成功的。
- 三重检查命名、语法或拼写错误;
- 尝试对文本同时使用 CSS 和 XPath;
- 尝试使用 Locator(但由于不知道如何使用 Webdriver 进行设置而惨败);
我在终端中不断收到的错误是:
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);
方法等待元素出现在页面上。
在目标页面上添加一些输入并按下按钮后,JS 脚本将 运行 导致(除其他外)页面内显示文本。
“$I->see”行是较长测试的最后一部分,到那时为止是成功的。
- 三重检查命名、语法或拼写错误;
- 尝试对文本同时使用 CSS 和 XPath;
- 尝试使用 Locator(但由于不知道如何使用 Webdriver 进行设置而惨败);
我在终端中不断收到的错误是:
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);
方法等待元素出现在页面上。