gpt4 book ai didi

Python Selenium 数组

转载 作者:太空宇宙 更新时间:2023-11-04 10:27:49 24 4
gpt4 key购买 nike

我正在尝试使用 selenium-webdriver 检查数组中的所有复选框。但我正在努力寻找正确的方法/功能,不知何故,整个代码非常困惑。

我有一个或多个像这样的数据箱:

<div class="data_row">
<span id="checkbox_detail_ONE" class="checkbox_detail">
<input type="checkbox" value="dir://TEST" name="file_list" onclick="check_enable_btn()">

从我想检查所有复选框的位置,除了名为 checkbox_detail_ONE 的复选框

在 python 中我尝试了这个,但我猜它是对 driver.find_elements_by_xpath() 的误解:

for i in driver.find_elements_by_xpath("//span[@class='checkbox_detail']"):
if "ONE" in i.text:
print "Keep "
else:
print "Delete"
i.click()

最佳答案

在尝试了您的代码的各个部分之后,它们似乎在大多数情况下都有效。您的问题可能出在排除 check_detail_ONE 复选框。 i.text 返回元素中包含的文本,但从您发布的代码来看,没有任何内容让我相信复选框将在其文本中包含一个。对于您的排除,您将需要使用一个选择来专门选中此复选框。 Selenium 支持按 ID 选择,因此您可以使用以下内容:

driver.find_element_by_id("checkbox_detail_ONE")

或者如果您更喜欢使用 xpath:

driver.find_element_by_xpath("@id='checkbox_detail_ONE'")

如果你真的想确保它是一个跨度:

driver.find_element_by_xpath("//span[@id='checkbox_detail_ONE']")

这将导致以下代码:

for i in driver.find_elements_by_xpath("//span[@class='checkbox_detail']"):
if i == driver.find_element_by_xpath("//span[@id='checkbox_detail_ONE']"):
print "Keep "
else:
print "Delete"

现在,由于我们要检查复选框,它们是独立的元素,我们需要比较输入元素而不是它们包含的跨度。我们可以使用 xpath 的 /descendant:: 特性来选择这些元素,最终代码如下:

for i in driver.find_elements_by_xpath("//span[@class='checkbox_detail']/descendant::input"):
if i == driver.find_element_by_xpath("//span[@id='checkbox_detail_ONE']/descendant::input"):
pass # no action required
else:
i.click()

关于Python Selenium 数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28439150/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com