每周学点测试小知识-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函数,以及鼠标键盘操作等,芒果改天再跟大家分享。

TestOps|测试运维

精益技术 赋能过程

(0)

相关推荐

  • Python实现数据技术|爬虫便可获取免费百度文库付费文档

    相信大家在百度文档中看到了比较合适的文档之后就有了想下载学习一下的想法,但是有些时候文章更多的需要付费下载,针对于文档中能发现语句是分为一个一个的标签中的文本进行输出的.如果你有耐心和任劳任怨的想法, ...

  • SAP Fiori 页面的周期性动态刷新功能的实现步骤

    这是 Jerry 2021 年的第 39 篇文章,也是汪子熙公众号总共第 316 篇原创文章. 一个朋友向我咨询,关于 SAP Fiori 页面自动刷新的实现方法. 如果是 Jerry 之前视频 一步 ...

  • 用 Jupyter Notebook 爬取微博图片保存本地!

    来源:Python 技术「ID: pythonall」 今天咱们用 Jupyter-Notebook 并结合框架(Selenium)模拟浏览器抓取微博图片并将图片保存本地. Selenium 是一个用 ...

  • Python爬虫练习(三)

    文章目录 前言 一.隐藏cmd黑框 二.代码 1.引入库 2.登录 3.选择日期 4.选择人员 5.提交体温 6.主程序 总结 前言 使用selenium库模拟鼠标点击和键盘输入完成体温上报. 一.隐 ...

  • appium+python自动化30-list定位(find_elements)

    前言 有时候页面上没有id属性,并且其它的属性不唯一,平常用的比较多的是单数(element)的定位方法,遇到元素属性不唯一,就无法直接定位到了. 于是我们可以通过复数(elements)定位,先定位 ...

  • Excel中想让单元格颜色变化,打勾就能搞定,你肯定没用过

    [温馨提示]亲爱的朋友,阅读之前请您点击[关注],您的支持将是我最大的动力! Excel中的复选框除了打钩,打叉之外还有什么其他功能吗?其实,这里面的学问可多了,可造之物也非常之多.今天,我就利用复选 ...

  • selenium+python自动化86-循环点击遇到的坑

    # 前言 selenium定位一组元素,批量操作循环点击的时候会报错:Element not found in the cache - perhaps the page has changed sin ...

  • appium+python自动化31-android_uiautomator定位

    前言 appium的前身就是封装android的uiautomator这个框架来的,所以uiautomator的一些定位方法也可以用 一. text 1.通过text文本定位语法 > new U ...

  • 每周学点测试小知识——WebDriver定位元素

    跟着芒果一起,好好学习,天天向上~ 上周四下午的公开课是芒果给大家介绍的自动化相关知识--WebDriver定位元素,在这里芒果给大家做个小介绍: 下面是这次课程的思维导图: 这里我们先来看看tag ...

  • 每周学点测试小知识——分布式Jmeter

    跟着芒果一起,好好学习,天天向上~ 这里芒果为大家总结一下我们上周三节Vip试听课--分布式Jmeter的知识点,大家一起涨姿势~ 周三晚上的公开课,是由叮咚老师介绍分布式Jmeter~ 让我们来看看 ...

  • 每周学点测试小知识-Linux文件属性

    跟着芒果一起,好好学习,天天向上~ 上周五下午的vip试听课是芒果给大家介绍的Linux的一些基础知识,在这里芒果给大家对于其中的一部分内容--Linux文件属性做个小介绍: 课堂上芒果给大家介绍过L ...

  • 每周学点测试小知识-bat批处理命令

    跟着芒果一起,好好学习,天天向上~ 今天芒果要跟大家一起介(tu)绍(cao)一下bat批处理命令~ 批处理文件,顾名思义,是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者C ...

  • 每周学点测试小知识-数据库三大范式

    跟着芒果一起好好学习,天天向上 上周四下午的VIP试听课是由芒果给大家介绍的MySQL的一些基础知识,在这里芒果给大家分享其中的一部分内容--对数据库三大范式做个小介绍: 范式(数据库的设计范式)是符 ...

  • 每周学点测试小知识-正则表达式

    跟着芒果一起,好好学习,天天向上~ 好久不见的每周学点测试小知识,在上周的课堂上芒果给大家介绍了正则表达式,在这里我们简单的复习一下,认识一下正则表达式,并且学习一些常用的元字符: 正则表达式简介 正 ...

  • 每周科普丨染色体小知识

    染色体的定义 染色体是细胞内具有遗传性质的遗传物质,是基因的载体.常说宝宝眼睛像爸爸,嘴巴像妈妈,这就与其密切相关 而染色体核型分析就是借助染色分带技术,将一个典型的二倍体细胞的全部染色体根据其长度. ...

  • 每天学点养生小知识:秋冬季节,注意防寒驱寒,养生该吃什么呢?

    俗话说"百病从寒起",尤其是在进入秋冬季节,天气寒冷比较干燥,在这个季节更容易发生感冒.发烧等一系列呼吸道疾病,所以在这个季节更要注重养生保健,帮助身体驱寒保暖,同时也要多吃一些, ...

  • 谈谈一般人想不到的口腔学冷门小知识

    ​​第一恒磨牙很重要,而且是非口腔医学专业人士想象不到的重要,没错是想象不到的. 先说第一恒磨牙是什么? 第一恒磨牙,俗称六龄齿,也就是六岁左右所萌出的牙齿,是口腔内萌出的第一颗恒牙. 在这里需说明一 ...