基于python的自动化测试(selenium)

自动化测试的优势:

节省时间,人力成本,提高我们测试效率 ,重复使用,

选取自动化测试脚本的因素:

1.项目影响:自动化能否让开发更敏捷

2.复杂度:自动化是否易于实现,包括数据与其他环境影响

3.时间:自动化实现的时间,编写脚本所消耗的时间

4.维护编码工作量,以及代码的稳定性能否合格,可维护性强

5.覆盖率:是否覆盖关键特性和功能

6.资源利用率的问题,是否花费大量时间

7.自动化的执行过程,能否有足够的使用空间

8.用于兼容性测试(修改少量代码测试不同平台的兼容性)

自动化测试的产生:

自动化测试通过对人工操作,完成对被测系统的输出,并且对输入有校验功能

 selenium

使用javascript语言编写

selenium用于验证浏览器页面的行为

 安装selenium:在终端命令行输入pip install selenium 或者  pip3  install  selenium

注意该selenium默认安装到python的安装目录/lib/site-packages中

配置浏览器驱动程序,将firefox浏览器驱动器复制到python安装目录下

运行脚本,查看浏览器是否能正常打开

from selenium import webdriver
dr = webdriver.Firefox()
dr.get("https://www.baidu.com")  

 1.selenium  IDE,

一个类似qtp脚本录制火狐插件

2.在Firefox浏览器的【扩展和主题】菜单中打开,搜索Selenium IDE。找到后,选择【添加到Firefox】。

 webdriver基础

 1.连接和沟通浏览器

from selenium import webdriver

定义一个浏览器对象

driver=webdriver.Firefox()

需要拥有 与浏览器匹配的驱动程序

selenium支持适配的浏览器,ie      Firefox,chrome,safi,edge

 2.浏览器地址的应用

创建浏览器对象后,使用get()方法打开浏览器。get(需要一个url地址变量)

url=“https:/wwwbaidu.com”

driver.get(url)

3.识别页面中的元素

浏览器终端ctrl+f查询元素出现的次数

打开网页查找网页元素。

右键元素点击检查,查看元素控件

其中class name是HTML标签的class属性

driver.find_elements_by_id("")

tag name是HTML中的标签名(加《标签名》)

link test是一个标签(链接文本)的文本内容

`<a  href="">链接文本</a>`

xpath是HTML文档路径,页面信息的详细具体路径,区分相对绝对路径

 一次定位一个元素:

`driver.foud_element(by.属性,"属性名")`

webdriver常用的操作方式

 

 鼠标事件

需要先导入包:

from selenium.webdriver.common.action_chains import ActionChains

键盘事件 

from selenium.webdriver.common.keys import Keys

find_element(By.ID,"id名字")send_keys(Key.CONTROL,“x”)

基本操作:

clear():主要针对文本框

click():主要针对文本框,提交按钮,图片,超链接等点击内容

send_keys()输入文本内容。主要针对文本框

实战脚本:

"""
使用火狐浏览器
打开百度首页
输入  Selenium自动化测试
点击 百度 按钮
"""
from selenium import webdriver
from selenium.webdriver.common.by import By
from time import sleep

def test_open_baidu():

    driver = webdriver.Firefox()
    #打开网页
    driver.get("http://www.baidu.com")

    #定位页面元素,输入内容
    #driver.find_element_by_id("kw").send_keys("Selenium自动化测试")
    driver.find_element(By.ID,"kw").send_keys("Selenium自动化测试")
    #定位元素,点击按钮
    #driver.find_element_by_id("su").click()
    driver.find_element(By.ID,"su").click()

#test_open_baidu()
'''
将搜索结果的内容和文本,直接输出
'''

def test_output_result():

    driver = webdriver.Firefox()
    #打开网页
    driver.get("http://www.baidu.com")
    #强制休眠 3
    sleep(3)

    #定位页面元素,输入内容
    #driver.find_element_by_id("kw").send_keys("Selenium自动化测试")
    driver.find_element(By.ID,"kw").send_keys("Selenium自动化测试")
    sleep(3)
    #定位元素,点击按钮
    #driver.find_element_by_id("su").click()
    driver.find_element(By.ID,"su").click()
    sleep(10)
    #定位搜索结果,并输出
    res = driver.find_element(By.XPATH,"/html/body/div[2]/div[4]/div[1]/div[2]/div/div/div/div[2]/span").text
    print(res)
#test_output_result()

"""
获取页面中所有超链接的链接地址
"""
def test_output_linkurl():

    driver = webdriver.Firefox()
    #打开网页
    driver.get("http://www.baidu.com")
    #强制休眠 3
    sleep(3)
    #定位所有超链接,获取链接属性
    a_list = driver.find_elements(By.TAG_NAME,"a")#结果是一个列表
    for a in a_list:
        print(a.text,a.get_attribute("href"))
test_output_linkurl()

脚本元素报错:没有找到页面元素解决方式

1)更换元素的定位方式

2)在元素添加休眠时间,导入time包

from time import sleep

强制休眠sleep(3)

5.控制浏览器的操作

from selenium import webdriver
driver=webdriver.Firefox()
driver.set_window_size(180,800)
driver.quit()

2.窗口的前进,后退,刷新(涉及到窗口切换)

前进

driver.forward()

后退

driver.back()

刷新

driver.refresh()

获取验证信息:

断言:

浏览器信息验证:

浏览器对象.title  

浏览器对象.current_url   浏览器的当前地址
浏览器对象.page_source   浏览器的页面代码

c 记录浏览器页面
页面元素.screenshot(图片名称和地址)    给元素截图 

浏览器对象.get_screenshot_as_file(图片名称和地址)    给窗口截图   图片类型为png格式                            
 

.网页弹窗,框架的处理

警告框处理:alert    confirm    prompt

                            具体做法:switch_to.alert.accept()

 7多框架切换

 

框架处理:针对frame 和 iframe框架

进入框架:浏览器对象

浏览器对象.switch_to.frame(id或者name,tag_name,xpath)

8.验证和纪录页面行为 

验证元素的属性和特性:

size:可以获取元素的宽高属性

test:可以获取元素的文本属性

文件上传

8. 窗口截图

 9.浏览器的关闭

close()关闭单个窗口

quit()关闭所有窗口

10.处理下拉列表

from selenium.webdriver.support.ui import Select
def test_select():
    dr = webdriver.Firefox()
    dr.get("file:///D:/testSelenium/testselect.html")
    sleep(2)
    #处理select标签
    #定位select标签
    pro = dr.find_element(By.ID,"pro")#定位标签
    # 通过select类将标签转化为selenium可以识别的Select
    # 转化完成后,选择
    Select(pro).select_by_value("河南省")#通过option的value属性查找和操作选项
    sleep(3)
    Select(pro).select_by_index(1)# 通过option在select中的位置下标选择选项
    sleep(3)
    Select(pro).select_by_visible_text("四川省")# 通过option标签对之间的文本信息进行选择

浏览器打开多窗口的验证

#浏览器打开多个窗口的验证
from selenium import webdriver
from time import sleep
from selenium.webdriver.common.by import By

def test_windows():
    dr = webdriver.Firefox()
    # 打开地址
    dr.get("https://www.baidu.com")
    sleep(5)
    #输出当前浏览器页面标题
    print(dr.title)
    #输出浏览器的句柄
    print(dr.current_window_handle)
    # 点击新闻超链接
    dr.find_element(By.LINK_TEXT,"新闻").click()
    sleep(5)
    #再次打印页面标题
    print(dr.title)
    print(dr.current_window_handle)
    #打印输出所有的浏览器窗口句柄信息
    print(dr.window_handles)
    #浏览器多个窗口信息,会组成一个列表,每一个列表中的元素,都是窗口的句柄信息
    #如果需要切换窗口,则选择对应的窗口句柄
    dr.switch_to.window(dr.window_handles[1])
    sleep(2)
    # 新闻页面搜索
    dr.find_element(By.ID,"ww").send_keys("俄罗斯和乌克兰的冲突")
    sleep(2)
    dr.find_element(By.ID,"s_btn_wr").click()
    sleep(5)
    # 输出搜索结果页面的标题
    print(dr.title)
    # 关闭当前窗口
    dr.close()
    sleep(5)
    # 退出浏览器
    dr.quit()

test_windows()

实现对图片把内容的下载操作!

注意:

需要导入requests库

 下拉滚动条!

 可以用keys键盘事件滚动下拉框

 获取cookie

利用cookie文件执行快捷登录操作

 添加cookie前必须打开网页否则会报错

删除cookie文件

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值