单击具有 href 的选项卡,通过采用文本而不是 xpath 进行行为测试
Click on a tab that has href, by taking text rather than xpath for behat testing
这是我在 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"
这是我得到的错误
When I click on the text "Members" # FeatureContext::iClickOnTheText2()
Cannot find text: "Members" (InvalidArgumentException)
谢谢
find()方法可以利用xpath等几种不同的选择器机制,也可以通过HTMLID、元素名称、文本内容、CSS选择器等
find() 方法还有许多快捷方式,例如 findLink(),它简化了常见用例,例如按名称查找 link。
在您的示例中,您可以将 xpath 替换为以下内容:
$element = $session->getPage()->findLink($arg1);
只要 $arg1 是 link 的 html ID、标题或文本内容,它就可以工作,这应该与示例中的 'Membership' 选项卡一起工作。
您可以在 Mink 手册的遍历页面部分找到有关 find() 方法、选择器和快捷方式的更多信息:http://mink.behat.org/en/latest/guides/traversing-pages.html
对于更高级的用法,Drupal Behat Extension 为 Drupal、Behat 和 Drush 提供了许多 out-of-the-box 集成。它还包括常见的 Behat 语句,例如单击 links。在这种情况下,您可以使用 Drupal Behat Extension:
When I follow "Membership"
这是我在 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"
这是我得到的错误
When I click on the text "Members" # FeatureContext::iClickOnTheText2()
Cannot find text: "Members" (InvalidArgumentException)
谢谢
find()方法可以利用xpath等几种不同的选择器机制,也可以通过HTMLID、元素名称、文本内容、CSS选择器等
find() 方法还有许多快捷方式,例如 findLink(),它简化了常见用例,例如按名称查找 link。
在您的示例中,您可以将 xpath 替换为以下内容:
$element = $session->getPage()->findLink($arg1);
只要 $arg1 是 link 的 html ID、标题或文本内容,它就可以工作,这应该与示例中的 'Membership' 选项卡一起工作。
您可以在 Mink 手册的遍历页面部分找到有关 find() 方法、选择器和快捷方式的更多信息:http://mink.behat.org/en/latest/guides/traversing-pages.html
对于更高级的用法,Drupal Behat Extension 为 Drupal、Behat 和 Drush 提供了许多 out-of-the-box 集成。它还包括常见的 Behat 语句,例如单击 links。在这种情况下,您可以使用 Drupal Behat Extension:
When I follow "Membership"