【问题标题】:Using PHPUnit with Selenium, how can I test that an element contains exactly something?将 PHPUnit 与 Selenium 一起使用,我如何测试元素是否包含某些内容?
【发布时间】:2012-02-29 09:34:16
【问题描述】:

我正在使用 PHPUnit 和 Selenium,目前正在使用类似 $this->assertElementContainsText('id=foo', 'bar') 的东西,当它发现时通过:<p id="foo">bar</p>

不过,我也在尝试测试p#foo 可能包含其他HTML 的情况,并且我想测试内容是否与完全匹配。在我看来,它看起来像 $this->assertElementTextEquals('id=foo', '<a href="http://www.example.com/">bar</a>')

是否有现成的方法可以使用 PHPUnit 和 Selenium 实现这一目标?

【问题讨论】:

    标签: php testing selenium phpunit


    【解决方案1】:

    您可以传入任何 Xpath 来定位所需的元素。

    $this->assertElementContainsText(
        "//p[@id='foo']/a[@href='http://www.example.com/']",
        'bar'
    );
    

    您可以将以下内容添加到您的基类中,以允许测试内容的完全匹配。

    /**
     * Asserts that an element contains exactly a given string.
     *
     * @param  string $locator
     * @param  string $text
     * @param  string $message
     */
    public function assertElementTextEquals($locator, $text, $message = '')
    {
        $this->assertEquals($text, $this->getText($locator), $message);
    }
    

    【讨论】:

    • 谢谢。我最终使用了 Xpath,它似​​乎工作得很好。 (我希望 Selenium 提供了一种方法来获取给定定位器的完整 HTML 内容,但我似乎找不到。)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-09
    • 2014-05-11
    • 1970-01-01
    • 1970-01-01
    • 2015-10-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多