在 PHPUnit 的 Selenium 扩展中使用 glob 来识别元素

Posted

技术标签:

【中文标题】在 PHPUnit 的 Selenium 扩展中使用 glob 来识别元素【英文标题】:Using glob in the Selenium extension to PHPUnit to identify elements 【发布时间】:2011-11-02 17:54:04 【问题描述】:

我正在使用 Selenium 扩展在 phpUnit 中编写 Selenium 测试用例。在测试中,我断言页面上存在某个链接。

例如,假设我要断言页面中存在以下链接:

<a href="http://www.***.com">click here to enter ***</a>

为了断言链接存在,我需要识别它。通常我们使用它们的锚文本来识别链接:assertElementPresent("link=click here to enter ***")

我不想使用整个锚文本来识别链接,而只是使用锚文本包含的子字符串“***”。为此,我可以使用 glob 和星号运算符:assertElementPresent("link=glob:*****")

这在 selenium IDE 上完美运行,但是在 PHPUnit 中编写等效代码时,断言失败。这是 PHPUnit 中的等效代码行:

$this->assertTrue(isElementPresent("link=glob:*****"));

上述断言失败,因为元素link=glob:***** 未被识别。该元素应被识别,因为页面上存在一个链接,其锚文本包含字符串“***”。

我的问题比我给出的简单示例更笼统:如何使用 glob 来识别 PHPUnit 的 Selenium 扩展中的元素?

【问题讨论】:

【参考方案1】:

我们在所有 Selenium 测试用例中都使用 XPath 表达式,但我没有参与编写它们,也没有研究其他选项。如果您找不到让glob 工作的方法,您可以随时求助:

self::assertTrue($this->isElementPresent("//a[contains(.,'***')]"));

【讨论】:

以上是关于在 PHPUnit 的 Selenium 扩展中使用 glob 来识别元素的主要内容,如果未能解决你的问题,请参考以下文章

PHPUnit + Selenium`InvalidArgumentException:找不到元素`

PHPUnit/Selenium 无法找到 *any* 元素

PHPUnit Selenium 移动到无效

phpunit-selenium 的 keys() 不适用于 safari webdriver

将带有梨的 PHPUnit Selenium 安装到 Windows 中

phpunit selenium2重复测试不起作用