Php 如何在behat3中使用xpath和类单击嵌套div下的按钮
我有一个嵌套的div结构,其中有一个button元素。我想通过behat测试用例检查它的点击和重定向功能,但由于出现错误,我无法测试它 我的网页HTML是这样的-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 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给出的解决方案解决了这个问题