selenium学习-----xpath和css定位一组元素

上一篇博文中写到了用tag name来定位一组元素,本篇文章中用XPath和css实现定位一组元素,两者的区别在于用tag name找到一组标签之后,用for循环来进行遍历,在遍历的过程中通过get_attribute("type")对type属性进行判断,通过XPath和CSS可以直接判断属性值,还是以checkbox.html为例

checkbox.html

<html>
<head>
	<meta http-equiv="content-type" content="text/html;charset=utf-8"/>
	<title>Checkbox</title>
	<link href="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.css" rel="stylesheet"/>
	<script src="http://cdn.bootcss.com/bootstrap/3.3.0/css/bootstrap.min.js"></script>
</head>
<body>
	<h3>checkbox</h3>
	<div class="well">
		<form class="form-horizontal">
			<div class="control-group">
				<label class="control-label" for="cl">checkbox1</label>
				<div class="controls">
					<input type="checkbox" id="c1"/>
				</div>
			</div>
			<div class="control-group">
				<label class="control-label" for="c2">checkbox2</label>
				<div class="controls">
					<input type="checkbox" id="c2"/>
				</div>
			</div>
			<div class="control-group">
				<label class="control-label" for="c3">checkbox3</label>
				<div class="controls">
					<input type="checkbox" id="c3"/>
				</div>
			</div>
			<input type="text" id="username"/>
		</form>
	</div>
</body>
</html>

checkbox_css_xpath.py,代码中涉及到len()方法读取长度,python中的pop()方法可以读取列表中的一个元素,默认是最后一个元素,相当于pop(-1),读取第一个元素可以用pop(1),以此类推,下边代码中用while循环来实现对所有的复选框去勾选

# coding="utf-8"

from selenium import webdriver
import os,time

driver = webdriver.Firefox()
file_path = "file:///" + os.path.abspath("checkbox.html")
print(file_path)
driver.get(file_path)

#通过XPath找到type=checkbox的元素
checkboxs = driver.find_elements_by_xpath("//input[@type='checkbox']")

#通过css找到type=checkbox的元素
#checkboxs = driver.find_elements_by_css_selector("input[type=checkbox]")
for checkbox in checkboxs:
    checkbox.click()
    time.sleep(5)

#打印当前页面上type为checkbox的个数
print(len(checkboxs))

#把页面上最后一个checkbox的勾选去掉,pop()方法用于获取列表中的一个元素(默认为最后一个元素),对任意元素进行操作的话可以利用pop(0),pop(1)来进行操作
##driver.find_elements_by_css_selector("input[type=checkbox]").pop().click()
##driver.find_elements_by_css_selector("input[type=checkbox]").pop(0).click()

#用while循环语句对所有的复选框去勾选
i = 0
while i < len(checkboxs):
    driver.find_elements_by_css_selector("input[type=checkbox]").pop(i).click()
    i = i + 1
    time.sleep(2)
    
driver.quit()

猜你喜欢

转载自blog.csdn.net/u012605082/article/details/80517695