Php 使用动态xpath时xpath断言失败

Php 使用动态xpath时xpath断言失败,php,xpath,selenium-webdriver,phpunit,assertions,Php,Xpath,Selenium Webdriver,Phpunit,Assertions,这非常类似于: 但有点不同 我想做的是: $status = "Test!"; //ajax request to update the page $this->postToPage($status); //This is the part that is failing.. $this->waitUntil(function () { if ($this->byXPath("//span[contains(text(),'{$status}')]"))

这非常类似于: 但有点不同

我想做的是:

$status = "Test!";

//ajax request to update the page

$this->postToPage($status);

//This is the part that is failing..

$this->waitUntil(function ()
{
    if ($this->byXPath("//span[contains(text(),'{$status}')]"))
    {
        return true;
    }
    return null;
}, 20000);

$elementtext = $this->byXpath("//span[contains(text(),'{$status}')]")->text();

$this->assertEquals($status, $elementtext);
断言两个字符串相等失败。 ---期望 +++实际的 @@ @@ -“测试!” +‘测试!’

知道为什么$elementtext被设置为“Test!”,并在末尾加上点吗?我在这里陷入了僵局,不知道它究竟为什么要添加点。

我发现了我的问题

这是因为postToPage()正在将其内容输入到另一个span元素中,因此,我的waitUntil()引用该元素以继续,而不是新创建的span。我的断言也仍然抓住了postToPage()的问题。

我发现了我的问题


这是因为postToPage()正在将其内容输入到另一个span元素中,因此,我的waitUntil()引用该元素以继续,而不是新创建的span。我的assert还在获取postToPage()方面的标记。

请显示您正在查找的
span
元素的HTML表示形式。它没有任何标记,只有postToPage($status)将元素添加到页面中。我试图使用assertEquals()的目的是断言的内容与$status的内容匹配,更明确地说:$status,或者在本例中,我的跨度正好是我页面上的这个:Test!然而,当调用$elementtext中描述的方法时,返回的是“Test!”,这很有趣,如果我回显$elementtext,则返回“Test!”,但如果我先睡几秒钟,然后回显,则返回“Test!”。请显示您正在查找的
span
元素的HTML表示形式。它除了本质上的postPage($status)之外没有其他标记将元素添加到页面中。我试图使用assertEquals()的目的是断言的内容与$status的内容匹配,更明确地说:$status,或者在本例中,我的跨度正好是我页面上的这个:Test!然而,当调用$elementtext中描述的方法时,返回的是“Test!”,这很有趣,如果我回显$elementtext,我会得到“Test!”,但是如果我睡几秒钟,然后回显,我会得到“Test!”