Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/237.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 如何在behat3中使用xpath和类单击嵌套div下的按钮_Php_Selenium_Laravel 5_Behat_Mink - Fatal编程技术网

Php 如何在behat3中使用xpath和类单击嵌套div下的按钮

Php 如何在behat3中使用xpath和类单击嵌套div下的按钮,php,selenium,laravel-5,behat,mink,Php,Selenium,Laravel 5,Behat,Mink,我有一个嵌套的div结构,其中有一个button元素。我想通过behat测试用例检查它的点击和重定向功能,但由于出现错误,我无法测试它 我的网页HTML是这样的- <div id="divSubmit1"> <div id="subDivSubmit1">...</div> <div class="row mt-20 ">...</div> <div class="row mt-20">

我有一个嵌套的div结构,其中有一个button元素。我想通过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 :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)

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

您的xpath应该是:

And I click on button "Submit"
“//div[@id='divSubmit1']//按钮[包含(text(),'$arg1')”
你的黄瓜步骤应该是:

And I click on button "Submit"

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

您的xpath应该是:

And I click on button "Submit"
“//div[@id='divSubmit1']//按钮[包含(text(),'$arg1')”
你的黄瓜步骤应该是:

And I click on button "Submit"

由于您定义的步骤效率不高,因此您定义的步骤的参数将仅匹配一个按钮(因为您的xpath基于节的id),或者如果您有取消选项,则最多匹配两个按钮

最好说
我提交的表单不带参数

如果需要常规步骤,则需要从xpath中去掉
id

对于“常规”按钮,请单击“更好地使用已在mink中定义的步骤”

我按下与
id | name | title | alt | value一起工作的“按钮(标识符)”

除此之外,对于自定义步骤,您需要处理异常,特别是致命异常,如在您的案例中,致命异常=>suiteends


您必须等待元素并确保其存在,然后再对其执行一些操作。

正如您定义的那样,您正在使用参数定义一个步骤,该参数将只匹配一个按钮(因为您的xpath基于节的id),或者如果有取消选项,则最多两个按钮

最好说
我提交的表单不带参数

如果需要常规步骤,则需要从xpath中去掉
id

对于“常规”按钮,请单击“更好地使用已在mink中定义的步骤”

我按下与
id | name | title | alt | value一起工作的“按钮(标识符)”

除此之外,对于自定义步骤,您需要处理异常,特别是致命异常,如在您的案例中,致命异常=>suiteends


您必须等待元素并确保它存在,然后对它执行一些操作。

您尝试单击的元素在提供的
xpath中找不到。
xpath
“//按钮[div[@id='divSubmit1'][contains(text(),“$arg1.”)]”
对我来说毫无意义。为什么它试图在
按钮的方括号内找到DIV
元素。方括号通常用于匹配当前元素的属性,而不是试图匹配子元素。@GregBurghardt--我从google找到了xpath引用。你能帮我写下正确的一个或任何链接参考也可以。事实上,我不熟悉这个行为,这是我的第一个代码。你能发布你试图让Selenium与之交互的HTML吗?@GregBurghardt-用请求的HTML页面更新了我的问题。你试图单击的元素在你提供的
xpath
xpath
“//按钮[div[@id='divSubmit1'][包含](text(),“$arg1”。”)]]
对我来说毫无意义。为什么它试图在
按钮
元素的方括号内找到一个DIV。方括号通常用于匹配当前元素的属性,而不是试图匹配子元素。@GregBurghardt--我从谷歌找到了xpath引用。你能书面帮助我吗正确的一个或任何链接引用也可以。事实上,我对这个behat是新手,这是我的第一个代码。你能发布你试图让Selenium与之交互的HTML吗?@GregBurghardt-用请求的HTML页面更新了我的问题。感谢@lauda的帮助。但是,这也不起作用。我已经尝试了
I press
step函数在此之前也适用于此。它似乎适用于除此之外的其他表单/页面。我通过@Greg BurghardtThanks for the help@lauda提供的解决方案重新解决了此问题。但是,这也不起作用。我之前也曾尝试过使用
I press
step函数进行此操作。它似乎适用于除此之外的其他表单/页面我用@Greg Burghardt给出的解决方案解决了这个问题