首页 > 解决方案 > 如何使用behat3中的xpath和类单击嵌套div下的按钮

问题描述

我有一个嵌套的 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)

标签: phpseleniumlaravel-5behatmink

解决方案


XPath 是错误的,而且您的参数需要是按钮文本,而不是按钮的 Id。

你的 xpath 应该是:

"//div[@id='divSubmit1']//button[contains(text(), '$arg1')]"

你的黄瓜步骤应该是:

And I click on button "Submit"

推荐阅读