selenium学习-----tag name定位一组元素

webdriver中有8中定位方法是针对单个元素定位的,同时也提供了8种用于定位一组元素的方法,单个元素定位和一组元素定位的其区别就在于多了s,有某有发现,来个复数就可以表示组了~~~~~~下边就罗列了8种用于定位一组元素的方法:

find_elements_by_id()

find_elements_by_name()

find_elements_by_class_name()

find_elements_by_tag_name()

find_element_by_link_text()

find_element_by_partial_link_text()

find_element_by_xpath()

find_element_by_css_selector()

今天学习了用tag name,xpath,css来定位组元素的一些应用实例,以我这三天打鱼两天晒网的学习态度,主要是担心忘记,特此记录一下~~~之前在单个元素定位的方法中学习过,tag是用标签来定位元素,标签就是我们说的html页面上的<a></a>,<input/>,<img/>........

先上一段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>

接下来就通过python+selenium来对页面上的复选框进行操作,由于我们的html页面是静态页面,在本地保存,所以需要引入os类来读取html文件存放的路径,os.path.abspath("文件名")可以读取文件的绝对路径的地址。

利用find_elements_by_tag_name("input")读取所有的input标签的元素,根据get_attribute("type")方法判断对应的元素类型,对所有的复选框按钮进行勾选,代码如下:(PS:sleep()方法用的时候也可以用from time import sleep    sleep(5)来实现哦~)

# coding="utf-8"

from selenium import webdriver
import os,time

driver = webdriver.Firefox()
#path.abspath()方法用于获取当前路径下的文件
file_path = "file:///" + os.path.abspath("checkbox.html")
print(file_path)
driver.get(file_path)

#选择页面上所有的tag name为input的元素
inputs = driver.find_elements_by_tag_name("input")

#然后从中过滤出type为checkbox的元素,单击勾选
for i in inputs:
    if i.get_attribute("type") == "checkbox":
        i.click()
        time.sleep(5)

driver.quit()

上边的代码就可以实现页面上所有复选框的勾选了,

遗留问题:

html存放在本地的时候打印出来的结果如下:

实际在页面中解析出来的地址是下边这样的,浏览器是如何解析地址的,后续查到原因再更新,有懂得前辈也可以帮忙解析下



猜你喜欢

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