Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/464.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.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
Javascript 带硒铬驱动的复选框_Javascript_Java_Selenium_Xpath_Selenium Chromedriver - Fatal编程技术网

Javascript 带硒铬驱动的复选框

Javascript 带硒铬驱动的复选框,javascript,java,selenium,xpath,selenium-chromedriver,Javascript,Java,Selenium,Xpath,Selenium Chromedriver,我正在从字符串数组列表中选择页面上的复选框。例如,我的数组包含[wva-00:04:F3:12:A7:2E,wva-00:04:F3:12:A6:F7,wva-00:04:F3:12:A6:90] 我已经测试了这个程序,它将进入for循环和if语句,所以我知道它正在从getPageSource查找文本。但是使用下面的xpath就会抛出这个错误。没有这样的元素:无法定位元素:{“方法”:“xpath”,“选择器”:“//label[text()='wva-00:04:F3:12:A7:2E']”。

我正在从字符串数组列表中选择页面上的复选框。例如,我的数组包含[wva-00:04:F3:12:A7:2E,wva-00:04:F3:12:A6:F7,wva-00:04:F3:12:A6:90]

我已经测试了这个程序,它将进入for循环和if语句,所以我知道它正在从getPageSource查找文本。但是使用下面的xpath就会抛出这个错误。没有这样的元素:无法定位元素:{“方法”:“xpath”,“选择器”:“//label[text()='wva-00:04:F3:12:A7:2E']”。请让我知道我做错了什么。还要注意的是,我不能使用诸如“marked_439”之类的id,这些id是为每一页生成的,并且不会是相同的数字

for(int i=0;i


wva-00:04:F3:12:A7:2E
伊米草原
2018-07-25
2018-06-18
2018-11-01
203
0004F3:12A72E
wva-00:04:F3:12:A6:F7
伊米草原
2018-07-25
2018-06-18
2018-11-01
203
0004F3:12A6F7
wva-00:04:F3:12:A6:90
伊米草原
2018-07-25
2018-06-18
2018-11-01
203
0004F3:12A690

尝试按ID定位元素,而不是使用XPath:

driver.findElement(By.id("yui-0-1")).click();

我想这正是您试图获取的元素。

不要使用XPath,请尝试按ID定位元素:

driver.findElement(By.id("yui-0-1")).click();

我想这正是你想要抓住的元素。

谢谢大家的帮助,大家都为找到解决方案做出了贡献。我能够用另一种方法解决这个问题,方法是在数组中找到文本,然后获取其ID并将其添加到不同的列表中。由于复选框ID只有一个数字不同(即yui-0-1到yui-0-0),我只是更改了字符串以匹配复选框ID以选择它

wvaIDs.add( driver.findElement(By.xpath("//*[contains(text(), '"+edcNumbers.get(i)+"')]")).getAttribute("id"));

char numToChange = wvaIDs.get(i).charAt(wvaIDs.get(i).length()-1);
int a=Integer.parseInt(String.valueOf(numToChange));  
a--; 
String newName = wvaIDs.get(i).substring(0,6)+a;
driver.findElement(By.id(newName)).click();

谢谢你们的帮助,伙计们,你们都为找到解决方案做出了贡献。我能够用另一种方法解决这个问题,方法是在数组中找到文本,然后获取其ID并将其添加到不同的列表中。由于复选框ID只有一个数字不同(即yui-0-1到yui-0-0),我只是更改了字符串以匹配复选框ID以选择它

wvaIDs.add( driver.findElement(By.xpath("//*[contains(text(), '"+edcNumbers.get(i)+"')]")).getAttribute("id"));

char numToChange = wvaIDs.get(i).charAt(wvaIDs.get(i).length()-1);
int a=Integer.parseInt(String.valueOf(numToChange));  
a--; 
String newName = wvaIDs.get(i).substring(0,6)+a;
driver.findElement(By.id(newName)).click();

您可以使用集成到堆栈溢出的HTML/CSS/Javascript代码段功能进行一些编辑,以提供一个很好的MCVE示例。“driver.findElement(By.xpath(“//label[normalize space(.)=”)”+edcNumbers.get(i)+“]/previous sibling::input[@type='checkbox']”)。单击();“你能在xpath中传递td而不是label并让我们知道吗。你能复制/粘贴HTML或链接到网站吗?”?代码图像不是很有帮助,尤其是如果您正在寻找最有效的xPath/CSS选择器,我已经尝试了上面所有的代码建议,但仍然显示相同的错误。我在上面添加了更多html,希望能有所帮助。我的程序和html都相当大,所以我不想发布全部内容。让我知道我还能做些什么来帮助清除任何混淆。您可以进行一些编辑,使用集成到堆栈溢出的HTML/CSS/Javascript代码段功能提供一个很好的MCVE示例。您尝试过这个吗。“driver.findElement(By.xpath(“//label[normalize space(.)=”)”+edcNumbers.get(i)+“]/previous sibling::input[@type='checkbox']”)。单击();“你能在xpath中传递td而不是label并让我们知道吗。你能复制/粘贴HTML或链接到网站吗?”?代码图像不是很有帮助,尤其是如果您正在寻找最有效的xPath/CSS选择器,我已经尝试了上面所有的代码建议,但仍然显示相同的错误。我在上面添加了更多html,希望能有所帮助。我的程序和html都相当大,所以我不想发布全部内容。让我知道我还能做些什么来帮助清除任何混淆。这似乎选择了整行,但没有选中复选框。此外,所有行标题id的更改。如果您在上面看到,一行将有yui-0-0,那么下一行将有yui-1-0。我需要选择特定的复选框,这些复选框将根据我在页面上查找的设备ID按行变化。因此,听起来您希望通过元素的内部HTML进行搜索。这可以通过
driver.findElement(By.xpath([text()[contains(,'wva-00:04:F3:12:A7:2E'))
Yes,我想选中找到的文本旁边的框。但是我尝试了下面的代码,它给我一个错误,说它不是有效的xpath表达式:driver.findElement(By.xpath([text()[contains(,'“+edcNumbers.get(I)+”))]/前面的同级::输入[@type='checkbox']”)。单击();这似乎选择了整行,但没有选中复选框。此外,所有行标题id都发生了变化。如果您看到上面的内容,一行将有yui-0-0,那么下一行将有yui-1-0。我需要选择特定的复选框,这些复选框将根据我在页面上查找的设备id在行中变化。因此,听起来您希望通过ele的内部HTML进行搜索这可以通过
driver.findElement(By.xpath(“[text()[contains(,'wva-00:04:F3:12:A7:2E'))
Yes,我想选中找到的文本旁边的框。但是我尝试了下面的代码,它给了我一个错误,说它不是一个有效的xpath表达式:driver.findElement(By.xpath([text()[contains(,'“+edcNumbers.get(I)+”)]/前面的同级::输入[@type='checkbox']”)。单击();