对多选框的操作比较灵活,可以有很多种方法,这里介绍了三种常用方法。
1、用基本的元素定位方法直接操作。
# 可以直接用一般的元素定位方法进行选择
br.find_element_by_xpath("//input[@value='python']").click()
br.find_element_by_xpath("//input[@value='selenium']").click()
2、利用find_elements系列方法获取列表。
# 可以直接用ch[index]来操作
ch = br.find_elements_by_xpath("//input[@type='checkbox']")
sleep(2)
ch[0].click()
sleep(2)
ch[1].click()
sleep(2)
3、还是利用find_elements系列方法获取列表,但可以用pop()函数进行操作。值得注意的是,pop() 函数是用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。
# pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。
ch.pop(0).click()
sleep(2)
# 前一个元素已经被移除,所以后一个元素变成pop(0)
ch.pop(0).click()
下面是python源码:
def checkbox2(url):
br = startBrowser.firefox()
br.maximize_window()
br.get(url)
br.implicitly_wait(10)
sleep(2)
# 先清除默认已勾选选项
br.find_element_by_xpath("//input[@type='checkbox'][@checked]").click()
sleep(2)
# 可以直接用一般的元素定位方法进行选择
br.find_element_by_xpath("//input[@value='python']").click()
br.find_element_by_xpath("//input[@value='selenium']").click()
sleep(2)
# 把所有已勾选的选项取消
for i in br.find_elements_by_xpath("//input[@type='checkbox']"):
if i.get_attribute('checked'):
i.click()
# 可以直接用ch[index]来操作
ch = br.find_elements_by_xpath("//input[@type='checkbox']")
sleep(2)
ch[0].click()
sleep(2)
ch[1].click()
sleep(2)
# 把所有已勾选的选项取消
for i in br.find_elements_by_xpath("//input[@type='checkbox']"):
if i.get_attribute('checked'):
i.click()
sleep(2)
# pop() 函数用于移除列表中的一个元素(默认最后一个元素),并且返回该元素的值。
ch.pop(0).click()
sleep(2)
# 前一个元素已经被移除,所以后一个元素变成pop(0)
ch.pop(0).click()
sleep(5)
br.quit()
加入sleep是为了看得清楚效果,实际工作中尽量少用强制等待。
下面是HTML源码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>多选框练习</title>
</head>
<body>
<p>多选框</p>
<div>
<input type="checkbox" name="course" value="python" >
Python基础
<br>
<input type="checkbox" name="course" value="selenium" checked>
Selenium自动化
</div>
</body>
</html>