Checkbox元素操作

应用背景

在实际项目过程中,会经常遇到页面的各自复选框,那么使用selenium该如何操作这些选项框呢?

Html页面

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<html>
<head>

<title>
</title>
</head>

<body>
<p><input type="checkbox" name="category" value="今日话题" />今日话题 </p>
<p><input type="checkbox" name="category" value="视觉焦点" />视觉焦点</p>
<p><input type="checkbox" name="category" value="财经" />财经</p>
<p><input type="checkbox" name="category" value="汽车" />汽车</p>

<p><input id="btnOperate" type="button" value="选择" onclick="static_num()" /></p>

</body>
</html>

复选框定位

tag获取页面中所有的标签为input的元素 elements 多了一个“s” 这样可以获取一组元素

1
2
3
4
5
6
7
8
9
10
inputs=driver.find_elements_by_tag_name("input")

print("复选框的个数为")
print(len(inputs))

#xpath获取元素
#inputs=driver.find_elements_by_xpath("//input[@type='checkbox']")

#通过css来定位
#inputs=driver.find_elements_by_css_selector("input[type=checkbox]")

使用for循环遍历input的元素

1
2
3
4
5
6
7
8
for i in inputs:
if i.get_attribute("type")=="checkbox": #获取元素属性为checkbox
i.click() #勾选方框
time.sleep(1)

#去掉最后一个选修的勾
driver.find_elements_by_xpath("//input[@type='checkbox']").pop(-1).click()
#pop(-1)获取最后一个,pop(0)获取第一个