Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/292.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 单击具有href的选项卡,通过获取文本而不是xpath进行行为测试_Php_Drupal_Automated Tests_Behat - Fatal编程技术网

Php 单击具有href的选项卡,通过获取文本而不是xpath进行行为测试

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));

这是我在FeatureContext文件中的代码

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扩展,您可以使用: 当我关注会员资格时