Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.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
Selenium 同一页面中重复字段名的Xpath解决方案_Selenium_Xpath_Selenium Webdriver - Fatal编程技术网

Selenium 同一页面中重复字段名的Xpath解决方案

Selenium 同一页面中重复字段名的Xpath解决方案,selenium,xpath,selenium-webdriver,Selenium,Xpath,Selenium Webdriver,该网页中有三个保存按钮,具有动态ID。请指导我如何定义最佳xpath,目前我已应用完整的xpath起始html节点 第一个保存按钮HTML代码 <button id="j_idt131" name="j_idt131" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only button" onclick="PrimeFaces.ab({source:'j_idt131',update:'c

该网页中有三个保存按钮,具有动态ID。请指导我如何定义最佳xpath,目前我已应用完整的xpath起始html节点

第一个保存按钮HTML代码

<button id="j_idt131" name="j_idt131" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only button" onclick="PrimeFaces.ab({source:'j_idt131',update:'csqa_form',oncomplete:function(xhr,status,args){if (args &amp;&amp; !args.validationFailed) qaChangeDialog.show();}});return false;" type="submit" role="button" aria-disabled="false"><span class="ui-button-text ui-c">Save</span></button>
<button id="j_idt104" name="j_idt104" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only button" onclick="PrimeFaces.ab({source:'j_idt104',update:'cemail_form',oncomplete:function(xhr,status,args){if (args &amp;&amp; !args.validationFailed) emailChangeDialog.show();}});return false;" type="submit" role="button" aria-disabled="false"><span class="ui-button-text ui-c">Save</span></button>
<button id="j_idt82" name="j_idt82" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only button" onclick="PrimeFaces.ab({source:'j_idt82',update:'cpwd_form',oncomplete:function(xhr,status,args){if (args &amp;&amp; !args.validationFailed) pwdChangeDialog.show();}});return false;" type="submit" role="button" aria-disabled="false"><span class="ui-button-text ui-c">Save</span></button>
保存
第二个保存按钮HTML代码

<button id="j_idt131" name="j_idt131" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only button" onclick="PrimeFaces.ab({source:'j_idt131',update:'csqa_form',oncomplete:function(xhr,status,args){if (args &amp;&amp; !args.validationFailed) qaChangeDialog.show();}});return false;" type="submit" role="button" aria-disabled="false"><span class="ui-button-text ui-c">Save</span></button>
<button id="j_idt104" name="j_idt104" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only button" onclick="PrimeFaces.ab({source:'j_idt104',update:'cemail_form',oncomplete:function(xhr,status,args){if (args &amp;&amp; !args.validationFailed) emailChangeDialog.show();}});return false;" type="submit" role="button" aria-disabled="false"><span class="ui-button-text ui-c">Save</span></button>
<button id="j_idt82" name="j_idt82" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only button" onclick="PrimeFaces.ab({source:'j_idt82',update:'cpwd_form',oncomplete:function(xhr,status,args){if (args &amp;&amp; !args.validationFailed) pwdChangeDialog.show();}});return false;" type="submit" role="button" aria-disabled="false"><span class="ui-button-text ui-c">Save</span></button>
保存
第三个保存按钮HTML代码

<button id="j_idt131" name="j_idt131" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only button" onclick="PrimeFaces.ab({source:'j_idt131',update:'csqa_form',oncomplete:function(xhr,status,args){if (args &amp;&amp; !args.validationFailed) qaChangeDialog.show();}});return false;" type="submit" role="button" aria-disabled="false"><span class="ui-button-text ui-c">Save</span></button>
<button id="j_idt104" name="j_idt104" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only button" onclick="PrimeFaces.ab({source:'j_idt104',update:'cemail_form',oncomplete:function(xhr,status,args){if (args &amp;&amp; !args.validationFailed) emailChangeDialog.show();}});return false;" type="submit" role="button" aria-disabled="false"><span class="ui-button-text ui-c">Save</span></button>
<button id="j_idt82" name="j_idt82" class="ui-button ui-widget ui-state-default ui-corner-all ui-button-text-only button" onclick="PrimeFaces.ab({source:'j_idt82',update:'cpwd_form',oncomplete:function(xhr,status,args){if (args &amp;&amp; !args.validationFailed) pwdChangeDialog.show();}});return false;" type="submit" role="button" aria-disabled="false"><span class="ui-button-text ui-c">Save</span></button>
保存

既然您知道按钮的顺序,您可以试试这个xpath

//button[contains(@id,"j_idt")][1]
//button[contains(@id,"j_idt")][2] 
//button[contains(@id,"j_idt")][3] 

您好,您可以通过粘贴链接提供完整的页面标记吗
我认为您可以通过选择//标签[.='Answert3']/以下::按钮[.='Save']

来使用AxisName,但根据W3C,它以[1]开头。如果我错了,请纠正我。@Vignesh你是对的。XPath是一种有趣的语言,它使用基于1的数组而不是基于0的数组(这在许多其他语言中很常见)@Vignesh当我将相同的概念应用于锚标记时,它不起作用//a[contains(text(),'Pending New Business')][1]@Thirumalai try//a[contains(,'Pending New Business')][1]@Thirumalai也可以更好地解释这一点