Php 单击具有href的选项卡,通过获取文本而不是xpath进行行为测试
这是我在FeatureContext文件中的代码Php 单击具有href的选项卡,通过获取文本而不是xpath进行行为测试,php,drupal,automated-tests,behat,Php,Drupal,Automated Tests,Behat,这是我在FeatureContext文件中的代码 public function iClickOnTheText2($arg1) { $session = $this->getSession(); $element = $session->getPage()->find('xpath',$session->getSelectorsHandler()->selectorToXpath('xpath', $arg1));
public function iClickOnTheText2($arg1)
{
$session = $this->getSession();
$element = $session->getPage()->find('xpath',$session->getSelectorsHandler()->selectorToXpath('xpath', $arg1));
if (null == $element) {
throw new InvalidArgumentException(sprintf('Cannot find text: "%s"', $arg1));
}
$element->click();
}
这是我的behat.yml文件
default:
suites:
default:
path: %paths.base%/features/bootstrap
contexts:
- FeatureContext
extensions:
Behat\MinkExtension:
base_url: http://somedevwebsite.ca
sessions:
default:
goutte: ~
我的主要目标是单击页面上显示为选项卡选项的文本,以便打开选项卡。我正试图抓住文本,以便单击文本。任何其他的方法也会被赞赏,但我尽量不使用xpath,因为我将不得不复制很多xpath。但是尝试查找特定文本的xpath并将其用于单击是可以的。请让我知道这有什么问题,因为我得到的错误是当我的功能包含一个步骤时
当我点击文本成员时
这就是我得到的错误
When I click on the text "Members" # FeatureContext::iClickOnTheText2()
Cannot find text: "Members" (InvalidArgumentException)
谢谢find方法可以使用几种不同的选择器机制,如xpath,但也可以通过HTML ID、元素名称、文本内容、CSS选择器等 find方法还有很多快捷方式,比如findLink,它简化了常见的用例,比如按名称查找链接 在您的示例中,可以使用以下内容替换xpath:
$element = $session->getPage()->findLink($arg1);
只要$arg1是链接的html ID、标题或文本内容,它就可以工作,在您的示例中,它应该与“成员资格”选项卡一起工作
有关查找方法、选择器和快捷方式的更多信息,请参见《水貂手册》中的“遍历页面”部分:
对于更高级的使用,提供了许多Drupal、Behat和Drush的现成集成。它还包括常见的行为语句,如单击链接。在这种情况下,对于Drupal Behat扩展,您可以使用:
当我关注会员资格时