【发布时间】:2019-07-31 16:56:00
【问题描述】:
我正在从字符串数组列表中选择页面上的复选框。例如我的数组包含 [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 会引发此错误。没有这样的元素:无法找到元素:{"method":"xpath","selector":"//label[text()='wva-00:04:F3:12:A7:2E']"}。请让我知道我做错了什么。另请注意,我不能使用诸如“marked_439”之类的 id,它们为每个页面生成不同的,并且不会是相同的数字。
for(int i = 0; i < edcNumbers.size(); i++)
if(driver.getPageSource().contains(edcNumbers.get(i)))
driver.findElement(By.xpath("//label[text()='"+edcNumbers.get(i)+"']/preceding-sibling::input[@type='checkbox']")).click();
</tr>
</thead>
<tbody class="yui-dt-body">
<tr class="yui-dt-odd">
<td id="yui-0-0" headers="yui-header-0" class="yui-dt-col-"><input type="checkbox" id="marked_439" name="439"></td>
<td id="yui-0-1" headers="yui-header-1" class="yui-dt-col-ALPHA">wva-00:04:F3:12:A7:2E</td>
<td id="yui-0-2" headers="yui-header-2" class="yui-dt-col-ALPHA">imiprairie</td>
<td id="yui-0-3" headers="yui-header-3" class="yui-dt-col-NUMERIC"></td>
<td id="yui-0-4" headers="yui-header-4" class="yui-dt-col-ALPHA"></td>
<td id="yui-0-5" headers="yui-header-5" class="yui-dt-col-NUMERIC"></td>
<td id="yui-0-6" headers="yui-header-6" class="yui-dt-col-ALPHA">2018-07-25</td>
<td id="yui-0-7" headers="yui-header-7" class="yui-dt-col-ALPHA">2018-06-18</td>
<td id="yui-0-8" headers="yui-header-8" class="yui-dt-col-ALPHA">2018-11-01</td>
<td id="yui-0-9" headers="yui-header-9" class="yui-dt-col-ALPHA"></td>
<td id="yui-0-10" headers="yui-header-10" class="yui-dt-col-ALPHA">203</td>
<td id="yui-0-11" headers="yui-header-11" class="yui-dt-col-ALPHA">0004F3:12A72E</td>
<td id="yui-0-12" headers="yui-header-12" class="yui-dt-col-ALPHA"></td>
<td id="yui-0-13" headers="yui-header-13" class="yui-dt-col-ALPHA"></td>
<td id="yui-0-14" headers="yui-header-14" class="yui-dt-col-edit">
<a rel="modal" href="settings/edc/mod/439" title="Edit">
<button></button>
</a>
</td>
<td id="yui-0-15" headers="yui-header-15" class="yui-dt-col-recycle">
<a rel="modal" href="settings/edc/rma/439" title="RMA">
<button></button>
</a>
</td>
<td id="yui-0-16" headers="yui-header-16" class="yui-dt-col-delete yui-dt-last">
<a rel="modal" href="settings/edc/del/439" title="Delete Confirmation">
<button></button>
</a>
</td>
</tr>
<tr class="yui-dt-even">
<td id="yui-1-0" headers="yui-header-0" class="yui-dt-col-"><input type="checkbox" id="marked_440" name="440"></td>
<td id="yui-1-1" headers="yui-header-1" class="yui-dt-col-ALPHA">wva-00:04:F3:12:A6:F7</td>
<td id="yui-1-2" headers="yui-header-2" class="yui-dt-col-ALPHA">imiprairie</td>
<td id="yui-1-3" headers="yui-header-3" class="yui-dt-col-NUMERIC"></td>
<td id="yui-1-4" headers="yui-header-4" class="yui-dt-col-ALPHA"></td>
<td id="yui-1-5" headers="yui-header-5" class="yui-dt-col-NUMERIC"></td>
<td id="yui-1-6" headers="yui-header-6" class="yui-dt-col-ALPHA">2018-07-25</td>
<td id="yui-1-7" headers="yui-header-7" class="yui-dt-col-ALPHA">2018-06-18</td>
<td id="yui-1-8" headers="yui-header-8" class="yui-dt-col-ALPHA">2018-11-01</td>
<td id="yui-1-9" headers="yui-header-9" class="yui-dt-col-ALPHA"></td>
<td id="yui-1-10" headers="yui-header-10" class="yui-dt-col-ALPHA">203</td>
<td id="yui-1-11" headers="yui-header-11" class="yui-dt-col-ALPHA">0004F3:12A6F7</td>
<td id="yui-1-12" headers="yui-header-12" class="yui-dt-col-ALPHA"></td>
<td id="yui-1-13" headers="yui-header-13" class="yui-dt-col-ALPHA"></td>
<td id="yui-1-14" headers="yui-header-14" class="yui-dt-col-edit">
<a rel="modal" href="settings/edc/mod/440" title="Edit">
<button></button>
</a>
</td>
<td id="yui-1-15" headers="yui-header-15" class="yui-dt-col-recycle">
<a rel="modal" href="settings/edc/rma/440" title="RMA">
<button></button>
</a>
</td>
<td id="yui-1-16" headers="yui-header-16" class="yui-dt-col-delete yui-dt-last">
<a rel="modal" href="settings/edc/del/440" title="Delete Confirmation">
<button></button>
</a>
</td>
</tr>
<tr class="yui-dt-odd">
<td id="yui-2-0" headers="yui-header-0" class="yui-dt-col-"><input type="checkbox" id="marked_441" name="441"></td>
<td id="yui-2-1" headers="yui-header-1" class="yui-dt-col-ALPHA">wva-00:04:F3:12:A6:90</td>
<td id="yui-2-2" headers="yui-header-2" class="yui-dt-col-ALPHA">imiprairie</td>
<td id="yui-2-3" headers="yui-header-3" class="yui-dt-col-NUMERIC"></td>
<td id="yui-2-4" headers="yui-header-4" class="yui-dt-col-ALPHA"></td>
<td id="yui-2-5" headers="yui-header-5" class="yui-dt-col-NUMERIC"></td>
<td id="yui-2-6" headers="yui-header-6" class="yui-dt-col-ALPHA">2018-07-25</td>
<td id="yui-2-7" headers="yui-header-7" class="yui-dt-col-ALPHA">2018-06-18</td>
<td id="yui-2-8" headers="yui-header-8" class="yui-dt-col-ALPHA">2018-11-01</td>
<td id="yui-2-9" headers="yui-header-9" class="yui-dt-col-ALPHA"></td>
<td id="yui-2-10" headers="yui-header-10" class="yui-dt-col-ALPHA">203</td>
<td id="yui-2-11" headers="yui-header-11" class="yui-dt-col-ALPHA">0004F3:12A690</td>
<td id="yui-2-12" headers="yui-header-12" class="yui-dt-col-ALPHA"></td>
<td id="yui-2-13" headers="yui-header-13" class="yui-dt-col-ALPHA"></td>
<td id="yui-2-14" headers="yui-header-14" class="yui-dt-col-edit">
<a rel="modal" href="settings/edc/mod/441" title="Edit">
<button></button>
</a>
</td>
<td id="yui-2-15" headers="yui-header-15" class="yui-dt-col-recycle">
<a rel="modal" href="settings/edc/rma/441" title="RMA">
<button></button>
</a>
</td>
<td id="yui-2-16" headers="yui-header-16" class="yui-dt-col-delete yui-dt-last">
<a rel="modal" href="settings/edc/del/441" title="Delete Confirmation">
<button></button>
</a>
</td>
【问题讨论】:
-
您可以进行一些编辑以提供一个很好的 MCVE 示例,使用集成到堆栈溢出的 HTML/CSS/Javascript sn-ps 功能。
-
你试过这个。 "driver.findElement(By.xpath("//label[normalize-space(.)='"+edcNumbers.get(i)+"']/preceding-sibling::input[@type='checkbox']" )).click();"
-
你能否在 xpath 中传递 td 而不是 label 并告诉我们。
-
能否请您复制/粘贴 HTML 或链接到该网站?代码图像不是很有帮助,特别是如果您正在寻找最有效的 xPath/CSS 选择器。
-
我已经尝试了上面所有的代码建议,但仍然显示相同的错误。我在上面添加了更多的html,希望能有所帮助。我的程序和 html 都相当大,所以我不想发布整个内容。让我知道我还能做些什么来帮助消除任何困惑。
标签: javascript java selenium xpath selenium-chromedriver