K. *_*ert 6 zombie.js behat mink
我正在使用Behat进行测试,使用ZombieJS驱动程序,到目前为止一切都运行良好,但有一件事困扰我,我似乎无法弄清楚如何让Behat模拟非点击链接元素.我想这来自Mink是一个"跨浏览器"的驱动程序,单击非链接元素并没有多大意义.对于我的用例,我需要它,因为页面上有几个元素附加了javascript事件监听器,我想测试这些功能.
我试过用
Then I follow "div.sa"
Run Code Online (Sandbox Code Playgroud)
但它失败了预期的错误:
01. Link with id|title|alt|text "div.sa" not found.
Run Code Online (Sandbox Code Playgroud)
因为它不是链接元素.Behat中有类似的步骤:
我按"button.class"
但这只适用于按钮.
有没有办法让Behat点击不是标签的元素?
Com*_*tar 12
有一些错误处理:
/** Click on the element with the provided xpath query
*
* @When /^(?:|I )click on the element "([^"]*)"$/
*/
public function iClickOnTheElement($locator)
{
$session = $this->getSession(); // get the mink session
$element = $session->getPage()->find('css', $locator); // runs the actual query and returns the element
// errors must not pass silently
if (null === $element) {
throw new \InvalidArgumentException(sprintf('Could not evaluate CSS selector: "%s"', $locator));
}
// ok, let's click on it
$element->click();
}
Run Code Online (Sandbox Code Playgroud)
是的,我相信是这样,但是您需要编写一个自定义步骤,类似于这些内容(如果您使用的是MinkContext.
/**
* @When /^I click the something$/
*/
public function iClickTheSomething()
{
$something = $this->getSession()
->getPage()
->find("css", "div.sa")
->click();
}
Run Code Online (Sandbox Code Playgroud)