在 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 的 keys() 不适用于 safari webdriver