python+selenium实现web自动化脚本编写总结

selenium是免费、开源的,功能与IBM:RFT、HP:QTP相媲美,无浏览器限制:IE、Chrome、Firefox、safari等都可以使用,无操作系统限制:windows、macOs、linux都可以安装,支持多语言编程,可与其他工具集成:unittest、pytest、Junit、TestNG等。
一、环境搭建
1、安装python3.x版本
下载和安装python3.x版本,可以选择官网https://www.python.org/getit/ 下载最新版本,不再赘述。注意:勾选组建的时候,勾选安装python到path这个选项;win+R–cmd输入python可以看到版本号说明安装成功;

2、安装Selenium包
在线安装方式:Win+R—cmd输入python -m pip install selenium;在cmd输入python进入python环境,然后输入 from selenium import webdriver,不报错就代表selenium安装成功;

3、安装开发工具pyCharm
官网下载社区版,专业版收费,不再赘述;

4、安装浏览器驱动driver
以Chrome浏览器驱动为例,先查看自己浏览器版本,按照自己的版本下载相应的驱动,下载地址百度就行,官网打开较慢,下载后直接放到python安装路径或者将Chromedriver路径添加系统环境path变量中;
注意:浏览器版本升级后,需要重新下载对应版本的driver,可以配置浏览器不升级即可;
【新增tip】若浏览器升级后,也可以更新chromedriver到chrome对应的版本;若运行代码时提示:session not created: This version of ChromeDriver only supports Chrome version xx(之前的版本)
则需要检查检查电脑中是否有旧的chromedrive存在,将其删除即可;.
二、selenium WebDriver运行原理简介
客户端API(脚本)-------浏览器驱动-------浏览器
API和驱动是C/S架构,API发送http请求到驱动,驱动有一个port监听请求,驱动解析指令后发给浏览器,浏览器执行以后发送反馈
Webdriver使用协议:Json Wire protocol和通信数据格式:Json
三、元素定位方法
我们这里说的元素都是网页元素(web element),页面显示的对象,包括按钮、文字、输入框等都称为HTML页面元素,要操作网页元素首先要找到这个元素,selenium有八大元素定位方法:
find_element_by_id 通过id定位元素,id唯一
find_element_by_xpath 通过xpath定位,相对/绝对路径
find_element_by_name 元素本身属性的名称,可能会定位到多个值,默认返回第一个值
find_element_by_class_name 元素的css 类
find_element_by_tag_name 标签,不推荐,重复率太高
find_element_by_link_text 通过文本链接定位
find_element_by_partial_link_text 通过部分文本链接定位
find_element_by_css_selector css选择器

下面只介绍常用的几种方法:
1、find_element_by_xpath
比较常用,用法如下,以登录我们路由器的密码输入框为例,F12或者右键-检查,定位到当前元素,右键copy-copy xpath,将拷贝的路径添加到脚本:
在这里插入图片描述

driver.find_element_by_xpath(’//*[@id=“kw”]’) # 相对路径
2、find_element_by_name/id
HTML页面:
在这里插入图片描述

Selenium脚本:
driver.find_element_by_id(‘psd’).send_keys(‘admin’) # 输入登录密码admin
driver.find_element_by_name(‘psd’).send_keys(‘admin’)

四、等待处理方法
1、固定等待
time.sleep(2)
固定等待2秒,脚本调试中使用,不建议用到项目中,会影响代码执行效率;

2、隐式等待
implicitly_wait(8)
最多等待8s直到页面刷新出来,一次设置,全局生效,缺点:元素已找到,但未渲染出页面,导致找不到相应元素而出错;
3、显式等待
from selenium.webdriver.support.wait import WebDriverWait # 显示等待包
from selenium.webdriver.support import expected_conditions as EC # 期望事件包

wait = WebDriverWait(driver, 3)
wait.until(EC.alert_is_present())
设置显示等待时间,最长等待3s,默认0.5s轮询一次,直到出现alert弹框
注意:若显式等待和隐式等待时间均有设置,按最长的时间算;
五、鼠标键盘操作
from selenium.webdriver import ActionChains # 导入鼠标键盘事件
from selenium.webdriver.common.keys import Keys # 键盘鼠标事件辅助类

actionChains = ActionChains(driver) # 实例化
actionChains.send_keys(Keys.ARROW_DOWN).send_keys(Keys.ENTER).perform()
鼠标向下移动一行,点击确定,perform()方法表示执行前面一系列动作,不可少
element.send_keys(Keys.CONTROL + ‘a’) # 全选密码
time.sleep(2)
element.send_keys(Keys.BACKSPACE) # 删除密码
time.sleep(2)
element.send_keys(‘12345678’) # 修改密码
将原密码删除,并修改为新密码
其他的方法用到的时候再百度;
六、弹框处理
常见弹框:alert(提示框)、confirm(用来确认)、prompt(输入内容)
弹框的操作 :accept() 接受、dismiss() 取消、text() 显示弹框文本、send_keys() 弹框中输入内容
例如路由器本地升级页面的弹框为confirm类型:

在这里插入图片描述
#点击升级按钮
driver.find_element_by_class_name(‘pcsmallbutton’).click()
sleep(2)
#接受confirm套框,切换到当前alert
driver.switch_to.alert.accept()

八、PyCharm常用快捷键介绍
转换到前/后一次打开的脚本:Ctrl+Alt+左/右
注释多行:选中要注释的行,ctrl+/
段落缩进:选中要缩进的行,Tab
取消缩进:选中要缩进的行,shift+Tab
九、总结
上面简单介绍了selenium的基本用法,在实际业务中可能还会遇到其他问题,一般在网络上都能找到答案;如果要搭建自动化测试框架可以使用pytest测试框架,另外还有selenium IDE可以实现脚本录制功能,并可以直接导出为py脚本,目前支持Chrome和Firefox浏览器,记录日志的模块logging等,这些后面介绍;

十、补充其他知识
1、查看第三方库的版本,如selenium的版本:
在这里插入图片描述

  • 9
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值