每周学点测试小知识-WebDriver页面操作
跟着芒果一起好好学习,天天向上~
不知道关注我们的课程或者公众号的同学还记不记得我们的WebDriver定位元素介绍的八种定位方式?今天的文章是关于定位之后的后续——WebDriver页面操作。
控制浏览器
WebDriver主要是提供web页面元素的各种方法,但是它也提供了一些浏览器的操作方法。
它提供了back和forward方法来模拟后退和前进按钮,set_window_size方法来设置浏览器的大小,maximize_window方法来最大化浏览器,refresh方法来刷新页面:
1from selenium import webdriver
2driver = webdriver.Chrome()
3#访问百度首页
4driver.get("http://baidu.com/")
5
6#点击访问“新闻”页面
7eleLink = driver.find_element_by_link_text("新闻")
8eleLink.click()
9
10#回退到百度首页
11driver.back()
12
13#前进到新闻页面
14driver.forward()
15
16#设置浏览器宽为800像素点,高为500像素点
17driver.set_window_size(800,500)
18
19#设置浏览器最大化
20driver.maximize_window()
21
22#刷新页面
23driver.refresh()
常用控件操作
编辑框:
对于编辑框,WebDriver提供了send_keys来输入值或者上传文件,clear清空输入框,submit提交内容:
1from selenium import webdriver
2
3url = "file:///C://Users//dell//Desktop//test.html"
4driver = webdriver.Chrome()
5#访问百度首页
6driver.get("http://baidu.com/")
7
8#定位百度输入框
9ele_i = driver.find_element_by_id("kw")
10#输入框输入值
11ele_i.send_keys("py")
12#清空输入框的值
13ele_i.clear()
14#输入框输入值
15ele_i.send_keys("python")
16#输入框提交
17ele_i.submit()
按钮:
对于页面的按钮,一般只有点击操作,WebDriver提供了click方法来完成操作:
1#定位百度一下按钮
2eld_bt = driver.find_element_by_id("su")
3#点击一下按钮
4eld_bt.click()
超链接:
对于页面的超链接,一般也只有点击操作,WebDriver提供了click方法来完成操作:
1#定位“新闻”超链接
2ele_Link = driver.find_element_by_link_text("新闻")
3#点击该超链接
4ele_Link.click()
这里有一段简单的html代码为之后的单选框、复选框、下拉列表介绍做准备:
1<html>
2<head>
3 <meta http-equiv="content-type" content="text/html;charset=utf-8" />
4</head>
5<body>
6 <h4>单选:性别</h4>
7 <form>
8 <label value="radio0">男</label>
9 <input name="sex" value="male" id="boy" type="radio"><br>
10 <label value="radio1">女</label>
11 <input name="sex" value="female" id="girl" type="radio">
12 </form>
13
14 <h4>多选框:测试工具</h4>
15 <form>
16 <input id="checkbox0" type="checkbox">selenium<br>
17 <input id="checkbox1" type="checkbox">UFT<br>
18 <input id="checkbox2" type="checkbox">RobotFrameWork<br>
19 </form>
20
21 <h4>下拉框:自动化测试</h4>
22 <form>
23 <select id="type">
24 <option value="ui" selected="selected">UI测试</option>
25 <option value="service">接口测试</option>
26 <option value="unit" >单元测试</option>
27 <option value="other">其他</option>
28 </select>
29 </form>
30
31 <h4>表格</h4>
32 <table border="1" id= "table">
33 <tr>
34 <td>学号</td>
35 <td>姓名</td>
36 <td>城市</td>
37 </tr>
38 <tr>
39 <td>2018001</td>
40 <td>Lilei</td>
41 <td>shanghai</td>
42 </tr>
43 <tr>
44 <td>2018002</td>
45 <td>HanMeimei</td>
46 <td>shanghai</td>
47 </tr>
48 <tr>
49 <td>2018003</td>
50 <td>Lily</td>
51 <td>beijing</td>
52 </tr>
53 </table>
54</body>
55</html>
单选框:
对于页面的单选框WebDriver提供了click函数进行选择,提供了is_selected函数来判断是否被选择:
1from selenium import webdriver
2
3url = "file:///C://Users//dell//Desktop//test.html"
4
5driver = webdriver.Chrome()
6driver.get(url)
7
8#定位性别男单选框
9eleS = driver.find_element_by_id("boy")
10#勾选男单选框
11eleS.click()
12#判断是否勾选
13print(eleS.is_selected())
复选框:
对于页面上的复选框,与单选框类似,WebDriver提供了click函数进行选择,提供了is_selected函数来判断是否被选择:
1#定位第一个复选框和第三个复选框
2eleC0 = driver.find_element_by_id("checkbox0")
3eleC2 = driver.find_element_by_id("checkbox2")
4
5#选中第一个复选框和第三个复选框
6eleC0.click()
7eleC2.click()
8#判断第一个复选框是否选中
9print(eleC0.is_selected())
10#反选第三个复选框
11eleC2.click()
下拉列表:
对于页面上的下拉列表,WebDriver提供了Select类进行处理,它提供了select_by_index函数以index属性值来查找匹配的元素并选择;select_by_value函数以value属性值来查找该option并选择;函数select_by_visible_text以text文本值来查找匹配的元素并选择。
1#导入Select模块
2from selenium.webdriver.support.ui import Select
3
4#定位下拉列表
5eleS = Select(driver.find_element_by_id("type"))
6
7#利用index选中第一个列表
8eleS.select_by_index(0)
9
10#利用value值,选中接口测试
11eleS.select_by_value("service")
12
13#利用text值,选中单元测试
14eleS.select_by_visible_text("单元测试")
表格:
对于表格WebDriver没有提供专门的方法进行操作这里我定义了两个个函数来读取表格里的数据:
1#获取表格中指定位置的值
2def get_table_content(driver,tableId,row,col):
3 #使用xpath定位到指定位置,tbody项不可或缺
4 xpathS = "//*[@id='"+tableId+"']/tbody/tr["+str(row)+"]/td["+str(col)+"]"
5 ele = driver.find_element_by_xpath(xpathS)
6 #获得指定表格的text值
7 #print(ele.text)
8 return ele.text
9
10#获取表格中所有数据值
11def get_table_contents(driver,tableId):
12 #二维数组保存所有的表格数据
13 eleL = []
14 #定位到指定表格
15 eleT = driver.find_element_by_id(tableId)
16 #定位表格中所有的行元素
17 eleTR = eleT.find_elements_by_tag_name("tr")
18 #对所有的行元素进行遍历,找到其中所有的列元素
19 for tr in eleTR:
20 #临时数组,用来保存一行中所有的列元素
21 eleTemp = []
22 #找到指定行元素中所有的列元素
23 eleTD = tr.find_elements_by_tag_name("td")
24 #对指定行中的列元素进行遍历,保存在临时数组
25 for td in eleTD:
26 eleTemp.append(td.text)
27
28 #将一行中所有的列元素保存在二维数组中
29 eleL.append(eleTemp)
30
31 return eleL
调用:
1#获取表格中第2行,第3列的数据
2print(get_table_content(driver,"table",2,3))
3
4#获得所有的表格数据并打印
5eles = get_table_contents(driver,"table")
6for i in range(0,len(eles)):
7 for j in range(0,len(eles[i])):
8 print("第%r行第%r列的值为:%r" %(i+1,j+1,eles[i][j]))
好了今天就给大家介绍着几种常用的元素了,关于其他WebDriver函数,以及鼠标键盘操作等,芒果改天再跟大家分享。
精益技术 赋能过程