关于学习selenium(基于python)的心得和总结 20200527

在2019年6月份左右,买了一本书基于python语言的selenium书,再加上在网上看视频并自己操作来学习selenium,写一些学习的总结,作为记录。

在学习的过程中,感觉需要有一定的python基础,然后要对基本的前端页面有所了解。虽然自己没有学习过python,但以前学过基本的java知识,再接触python,并不算是很难。对于学习selenium来说,还是足够的,没有那么复杂的逻辑,毕竟我是借助python写自动化测试脚本。

前期准备:
1.基本的python代码能力
2.熟悉HTML网页基本组成结构
1)标签对组成
2)标签有各种属性
3)标签对之间有文本数据
4)标签有层级关系
5)THML的框架(frame)

第一、搭建环境,安装python3、selenium、安装开发环境Pycharm,安装浏览器驱动。
在安装浏览驱动中遇到过一些问题,无法通过脚本启动浏览器,然后,去网上查找原因,得到了解决。不同的驱动、不同的浏览器版本会不兼容,导致无法打开浏览器,所以,在选择浏览器版本的时候,要注意版本问题。

第二、学习元素定位,在这一块,花费的时间比较多,这是自动化测试脚本的核心,要先准确定位到想要操作的元素,然后调WebElement对象的方法或属性,来实现通过脚本自动控制页面的目的。

八大元素定位方法:

  • id定位
  • name定位
  • class定位
  • tag_name定位
  • link_text定位
  • partial_link_text定位
  • xpath定位
  • css 定位

WebElement对象常见属性和方法:

send_keys()方法:输入指定的字符串;上传附件;输入键盘类操作 click()方法:点击该元素
clear()方法:清空元素的文本内容 get_attribute()方法:得到某个属性的值(参数为属性名字)
screenshot()方法:屏幕截图(参数为保存的图片的全路径) text方法:得到元素的文本内容(它是一个属性方法,所以不需要打())

我比较喜欢id,name,tag_name和xpath相对定位这几种方式(前面三种要注意属性值的唯一性),由于xpath是万能的,加上前面的几种方法,几乎可以做到对整个页面的定位。如果再遇到其余的特殊情况或问题,在网上查一下资料,基本上可以得到解决。

在此容易遇到的问题是无法定位到元素,常见原因:

1、元素未加载完成,可以设置个等待时间
2、元素在iframe里,要切换到iframe里去找元素。
driver.switch_to_frame
3、不在视窗里,需要拉滚动条
4、id是动态的,此时可以使用xpath的相对路径方法定位该元素

第三、学习多个窗口的切换

先得到窗口句柄,再调用switch_to.window()方法切换到指定窗口句柄的窗口。关于下拉框,通过Select类提供的方法(select_by_value()、select_by_index()、select_by_visible_text()、options方法)来完成下拉框的操作。多框架的操作,使用switch_to.frame()
切到指定的框架中,参数支持index,id,name,元素对象。

第四、关于弹窗/JS调用/键盘键鼠模拟。

Alert弹窗,是不可以拖动的,调用switch_to.alert方法切换到Alert框上,accept()方法:点击确定,dismiss()方法:点击取消。
模拟鼠标双击、右击、悬停、拖拽等等。。。。

第五、在自己尝试写脚本时,遇到了一个印象很深刻的问题。登录时有验证码,第一次遇到这个问题,我发现我没有办法去解决,后来通过查资料知道;
1、找开发在测试环境中去掉验证码的输入,自动化测试完成后加上验证码,然后手动测试验证码。
2、设置万能验证码,只要输入万能完整码就能通过验证。
3、通过session和cookie的机制,绕过登录

这些是记忆问题,没有太大的逻辑难度,重在记忆。先把握好学习的整体方向,慢慢学,实在记不住,就多查资料,会查资料也是一种本领,然后在实际项目中多次操作,以此来加深记忆。自动化测试脚本,本质上是通过脚本来替代人对页面的操作(点击某个按钮,在输入框中输入内容,清空输入框的内容,拖动滚动条,复制粘贴…)。

后来,又学习了unittest,unittest是Python官方自带的单元测试框架。

unittest包含了四个基本组成部分
(https://docs.python.org/3.6/library/unittest.html?highlight=unittest)
Test Fixture:测试固件 Test Case:测试用例 Test Suite:测试套件 Test Runner:测试执行器

unittest中常见的断言方法和装饰器的学习。
断言(相当于检查点),用来判断预期结果是否与实际结果相等,如果相等,则返回True,否则返回False,并抛出断言异常。

对框架还不太熟悉,缺乏实际运用,不熟练。
。。。。。。。。。。。。。。。。。。。

只是目前的学习记录和想法,之前都是看的别人写的笔记和资料,缺乏自己的思考,于是今天自己动手写一写,独立思考并总结。

你可能感兴趣的:(学习总结)