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
网页中的复选框id不断更改,导致selenium脚本失败_Selenium_Xpath_Checkbox - Fatal编程技术网

网页中的复选框id不断更改,导致selenium脚本失败

网页中的复选框id不断更改,导致selenium脚本失败,selenium,xpath,checkbox,Selenium,Xpath,Checkbox,我正在尝试自动单击某个复选框。但是,每次运行后,复选框id都会更改,脚本无法找到元素。是否有另一种编写xpath的方法 <span id="field_key$0993573c-83b4-30d4-9139-44e44b496d0f$1food_contamination-checkbox" class="v-checkbox v-widget" ca-help-field-id="undefined"> <input id="gwt-uid-193" type="checkb

我正在尝试自动单击某个复选框。但是,每次运行后,复选框id都会更改,脚本无法找到元素。是否有另一种编写xpath的方法

<span id="field_key$0993573c-83b4-30d4-9139-44e44b496d0f$1food_contamination-checkbox" class="v-checkbox v-widget" ca-help-field-id="undefined">
<input id="gwt-uid-193" type="checkbox" value="on" tabindex="0" checked=""/>
<label for="gwt-uid-193"/>
</span>
如果父级
id是固定的,您可以使用它并向下移动一级到复选框

driver.findElement(By.cssSelector("#field_key$0993573c-83b4-30d4-9139-44e44b496d0f$1food_contamination-checkbox > input"));
或者使用父类

driver.findElement(By.cssSelector(".checkbox > input"));
如果只有一个复选框,则可以使用type属性

driver.findElement(By.cssSelector("[type='checkbox']"));

我自己找到了解决办法。我们可以根据复选框的位置使用
xpath
,即:

这也可用于单选按钮。将
复选框
替换为
收音机

driver.findElement(By.cssSelector("[type='checkbox']"));
// input[@type='checkbox'])[position()=3]