Python Selenium自动化测试工具使用(四)

8 篇文章 0 订阅
8 篇文章 0 订阅

一、Selenium入门

本期介绍如何处理警告弹窗,frame切换和滚动条的操作,顺便再说一下如何对页面进行截图,下面直接进入正题开始本期的内容。

1、警告弹窗的处理

有时我们在执行时会弹出一些系统的弹框,这是我们需要将其关闭,避免影响我们后面的测试。

方法说明
alert = driver.swtich_to.alert获取弹出框对象
alert.text获取弹出框的提示信息
alert.accept()接受弹出框
alert.dismiss()取消弹出框

实例代码演示

# 导包
from selenium import webdriver
import time
# 实例化浏览器驱动对象
driver = webdriver.Chrome()
# 打开百度
driver.get("https://www.baidu.com")
# 窗口最大化
driver.maximize_window()
# 隐式等待
driver.implicitly_wait(10)
#鼠标悬停至“设置”链接
driver.find_element_by_xpath('//span[text()="设置"]').click()
#打开搜索设置
driver.find_element_by_link_text("搜索设置").click()
# 点击  保存设置
driver.find_element_by_xpath('//a[text()="保存设置"]').click()
time.sleep(3)
# 弹出确认框,接受确认
driver.switch_to.alert.accept()
# 等待3秒
time.sleep(3)
# 关闭
driver.quit()

2、iframe表单切换

在web用应用中会遇到一些iframe的表单嵌套的内容一般为广告位,而webdriver只能对当前页面内的元素进行定位,所以就需要切换到对应的表单下进行操作

方法说明
driver.swtich_to.frame(“标签的元素对象”)切换到目标iframe
driver.swtich_to.default_content()返回默认页面

实例代码演示

# 导包
from selenium import webdriver
import time
# 实例化浏览器驱动对象
driver = webdriver.Chrome()
# 打开163邮箱
driver.get("https://mail.163.com/")
# 窗口最大化
driver.maximize_window()
# 隐式等待
driver.implicitly_wait(10)
# 切换到登录的iframe中
fr = driver.find_element_by_css_selector('[scrolling="no"]')
driver.switch_to.frame(fr)
# 输入邮箱名称
driver.find_element_by_name('email').send_keys("ygc_king@163.com")
# 输入密码
driver.find_element_by_name('password').send_keys("111111")
# 退出到初始也页面
driver.switch_to.default_content()
# 点击企业邮箱
driver.find_element_by_xpath('//a[text()="企业邮箱"]').click()
# 等待3秒
time.sleep(3)
# 关闭
driver.quit()

说明一下,driver.swtich_to.frame()也可以用id和name属性的,我们看一下源码(如下图),默认是先进行id属性和name属性进行定位。这里我是先用定位好的,然后在切换的,原因是163邮箱的这个登录iframe的id属性值是变化的,每次打开id属性值都不一样,所以我没有用id属性进行定位,虽然用id和name比较方便,但是一定要保证id和name是唯一不变的。
在这里插入图片描述

3、滚动条的滑动

方法说明
js = “window.scrollTo(x,y)”定义js脚本字符串
driver.execute_script(js)执行js脚本

x表示横向移动像素,y表示纵向移动的像素,要移动到最右侧或者最低部只要设置参数为无穷大即可

实例代码演示

# 导包
from selenium import webdriver
import time
# 实例化浏览器驱动对象
driver = webdriver.Chrome()
# 打开百度搜索结果页
driver.get("https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E4%BD%A0%E5%A5%BD")
# 窗口最大化
driver.maximize_window()
time.sleep(1)
# 隐式等待
driver.implicitly_wait(10)
# 定义js脚本字符串
js = "window.scrollTo(1000,10000)"
# 执行
driver.execute_script(js)
# 等待3秒
time.sleep(3)
# 关闭
driver.quit()

4、窗口截图

我们在跑自动化时,可以对报错页面继续截图,或断言失败的页面进行截图,这样方便我们后期进行查看和bug的提交,或分析自动化代码中的bug。

方法说明
driver.get_screenshot_as_file(filepath)截图

实例代码演示

# 导包
from selenium import webdriver
import time
# 实例化浏览器驱动对象
driver = webdriver.Chrome()
# 打开163邮箱
driver.get("https://www.baidu.com/s?ie=utf-8&f=8&rsv_bp=1&rsv_idx=1&tn=baidu&wd=%E4%BD%A0%E5%A5%BD")
# 窗口最大化
driver.maximize_window()
time.sleep(1)
# 隐式等待
driver.implicitly_wait(10)
# 定义js脚本字符串
js = "window.scrollTo(1000,10000)"
# 执行
driver.execute_script(js)
# 截图
file_name = "./test_screen%s.png" % time.strftime("%Y%m%d%H%M%S")
driver.get_screenshot_as_file(file_name)
# 等待3秒
time.sleep(3)
# 关闭
driver.quit()

说明:保存的路径必须提前手工创建好,我是直接保存到当前文件中,我们可以查看截图,结果如下
在这里插入图片描述
在这里插入图片描述
到目前为止Selenium的使用就介绍完了,里边基本包含了我们遇到的大部分情况。但是只有Selenium还不能很好的编写自动化代码,因为我们在写自动化的代码时会很多,会出现很多冗余的代码出现,也不好管理代码,一旦出现bug不好定位,而且只要UI有变化,我们代码的改动量也会很大,这里我们就要引出下一个要介绍的UnitTest框架,通过这个框架就能对我们的测试用例进行很好的管理,从下期开始就要对UnitTes测试框架进行介绍了!!

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值