我有一个嵌套的div结构,其中包含一个按钮元素。我想通过behat测试用例来检查点击和重定向功能,但是由于出现错误,我无法对其进行测试。
我的页面HTML就是这样-
<div id="divSubmit1">
<div id="subDivSubmit1">...</div>
<div class="row mt-20 ">...</div>
<div class="row mt-20">
<div class="col-xs-offset-7 col-xs-5 mt-20 mb-10 text-center">
<button class="btn btn-success btn-lg mt-20" type="submit" name="cmd_btn_submit" onclick="return check_input()">Submit
<span class="btn-icon"><i class="fas fa-chevron-right"></i></span></button>
</div>
</div>
</div>
尝试了以下内容
这是我进入功能文件的步骤
And I click on button "cmd_btn_submit"
我的上下文文件有
* @And I click on button :arg1
* @Then I click on button :arg1
*/
public function iClickOnButton($arg1)
{
$this->getSession()->getPage()->find("xpath", "//button[div[@id='divSubmit1'][contains(text(),'".$arg1."')]]
")->click();
}
收到此错误
And I click on button "cmd_btn_submit" # Shop\Features\Context\FeatureContext::iClickOnButton()
Fatal error: Call to a member function click() on null (Behat\Testwork\Call\Exception\FatalThrowableError)
答案 0 :(得分:0)
XPath错误,加上您的参数必须是按钮文本,而不是按钮的ID。
您的xpath应该是:
"//div[@id='divSubmit1']//button[contains(text(), '$arg1')]"
您的黄瓜步骤应该是:
And I click on button "Submit"
答案 1 :(得分:0)
由于您定义的效率不是很高,因此您正在定义一个参数仅与按钮匹配的步骤(因为您的xpath基于该部分的ID),或者如果有取消选项,则最多两个按钮。 / p>
最好说I submit the form
,不要使用参数。
如果要执行一般步骤,则需要从xpath中删除id
。
对于常规按钮单击,最好使用貂皮中已定义的步骤
I press "button_identifier"
与id|name|title|alt|value
一起使用
除此之外,对于您的自定义步骤,您需要处理异常,特别是致命异常,例如在您的情况下,致命异常=>套件结束。
您必须等待该元素并确保该元素存在,然后再对该元素执行一些操作。