Javascript生成的文字“$ I->看不到”

时间:2016-05-16 16:34:27

标签: codeception acceptance-testing

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

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

  • 三重检查命名,语法或拼写错误;
  • 尝试将CS​​S和XPath同时用于文本;
  • 尝试使用Locator(但由于不知道如何使用Webdriver准确设置,因此失败了);

我在终端中遇到的错误是:

  

按名称,CSS或XPath元素定位的元素不是   找到。

网页段落部分:

<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>

如果没有别的,有人可以编写一个像样的定位器配置计划吗?官方网页上的use \Codeception\Util\Locator;并没有真正削减它。

3 个答案:

答案 0 :(得分:0)

您可以尝试在例外情况下从DOM重新选择元素:

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

答案 1 :(得分:0)

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

确实,主要问题是测试是立即寻找文本。解决这个问题的最简单,最优雅的方法是使用$ I-&gt; wait();在see命令之前,它就像这样

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

答案 2 :(得分:0)

在这种情况下,您可以使用此方法:

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

方法一直等到元素出现在页面上。