zoukankan      html  css  js  c++  java
  • Airtest学习(二)Airtest-Selenium 点击 断言 生成报告

    前言

    Selenium是一个用于Web应用程序的自动化测试工具。它直接运行在浏览器中,可以模拟用户在浏览器上面的行为操作。

    在AirtestIDE中,开发者也给我们提供了使用Selenium的窗口。不过使用的框架是Airtest-Selenium框架。Airtest-Selenium是对selenium的python库做的一层封装,它添加了部分图像识别的接口,也可以生成网页版测试报告。

    本文将借助IDE上的Selenium窗口,来给大家讲解在浏览器上进行自动化测试的实战。

    IDE中的Selenium窗口

    在AirtestIDE中调出Selenium的窗口

    默认情况下,IDE没有并显示Selenium的窗口,所以我们需要在IDE顶部的窗口菜单下,把Selenium Window勾选上,勾选之后Selenium的窗口才会显示在IDE界面的左侧。

    image

    image

    插入初始代码的快捷按钮

    Selenium Window给我们提供了一些常用的按钮,比如点击窗口下类似地球的按钮,会自动帮我们在脚本编辑窗口插入一些初始化代码:

    image

    插入代码之前,我们需要在脚本窗口弹出的黄色提供框中,选择Yes允许插入代码:

    image

    这样,脚本编辑窗就会自动插入如下代码:

    # 引入selenium的webdriver模块
    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    from airtest_selenium.proxy import WebChrome
    
    #创建一个实例,代码运行到这里,会打开一个chrome浏览器
    driver = WebChrome()
    driver.implicitly_wait(20)

    需要注意的是,如果是首次使用这个按钮,IDE会弹窗提示需要设置谷歌浏览器的路径:

    image

    这时我们就需要先到选项--设置中,找到Selenium那部分内容,然后把chrome的路径设置好(chrome路径可右键查看属性),才能正常插入上述代码。

    image

    Selenium的常用方法

    打开指定网址

    我们以打开微博首页为例子:

    driver.get("https://weibo.com/")

    driver.get() 方法会在浏览器中打开一个指定的网址,给它传入网址地址即可。

    最大化窗口
    driver.maximize_window()
    关闭窗口/浏览器
    # 关闭当前窗口,如果浏览器此时只有1个窗口,浏览器也会被关闭
    driver.close()
    
    # 退出驱动关闭所有窗口
    driver.quit()

    Airtest-Selenium简介

    上文我们提到Airtest-Selenium是基于Selenium语法的,但是Airtest的开发者们还另外封装了如下方法:

    图像识别接口

    Airtest-Selenium对图像识别的封装有两个接口,图像识别点击和图像识别断言:

    ①点击Selenium Window下方的airtest_touch按钮

    image

    在浏览器页面上截取你想要点击位置的图片,双击完成截图,脚本编辑窗口会自动生成1条图像识别点击的脚本

    image

    driver.airtest_touch(Template(r"tpl1582031994893.png", record_pos=(8.99, 5.23), resolution=(100, 100)))

    ②点击Selenium Window下方的airtest_touch按钮

    image

    在浏览器页面上截取你想要进行断言的图片,双击完成截图,脚本编辑窗口会自动生成1条图像识别断言脚本

    image

    driver.assert_template(Template(r"tpl1582032716811.png", record_pos=(0.51, 1.315), resolution=(100, 100)), "成功打开airlab官网")

    关于Selenium更多的断言实例,详看我们之前的推文“测试同学都应该知道的断言知识...。

    值得注意的是,这两个接口是基于Airtest框架的图像识别封装,如果图像脚本运行时在网页中找不到对应图像,会抛出Target not found on screen的异常。

    多标签页录制

    selenium提供了切换标签页的接口。

    driver.switch_to.window(driver.window_handles[number])
    这个语句执行后,可以切换到第number个打开的标签页。但是对于用户来说,这个接口不是那么好理解与调用,因为这样需要记住标签打开的顺序。

    而大部分时候,切换标签页的操作一般都出现在:打开新窗口、关闭标签页这两种情况下。因此,Airtset-Selenium封装了两个接口:

    driver.switch_to_new_tab()
    driver.switch_to_previous_tab()

    在这个接口内部,Airtest-Selenium维护了标签页的组织结构。用户只需在打开新标签页时,调用switch_to_new_tab

    另外在结束当前标签页时,回到上一个标签页时,调用switch_to_previous_tab()即可,不再需要去考虑当前是第几个这样之类的问题。

    生成报告

    被Airtest-Selenium封装的接口,运行过后都会生成对应的报告,在AirtestIDE中可以直接点击生成报告按钮,即可查看对应的报告内容。

    image

    小结

    我们以1个小的实战案例来总结今天讲述的内容:

    复制代码
    # -*- encoding=utf8 -*-
    __author__ = "19617"
    
    from airtest.core.api import *
    
    from selenium import webdriver
    from selenium.webdriver.common.keys import Keys
    from airtest_selenium.proxy import WebChrome
    driver = WebChrome()
    driver.implicitly_wait(20)
    
    driver.get("https://airlab-gl.163.com/b2b")
    
    driver.maximize_window()
    
    driver.assert_template(Template(r"tpl1582032716811.png", record_pos=(0.51, 1.315), resolution=(100, 100)), "成功打开airlab官网")
    
    driver.airtest_touch(Template(r"tpl1582034527805.png", record_pos=(8.975, 5.765), resolution=(100, 100)))
    
    
    driver.switch_to_new_tab()
    
    driver.switch_to_previous_tab()
    
    driver.quit()
    复制代码

    image

    声明 欢迎转载,但请保留文章原始出处:) 博客园:https://www.cnblogs.com/chenxiaomeng/ 如出现转载未声明 将追究法律责任~谢谢合作
  • 相关阅读:
    Python Scrapy爬虫(下)
    Hadoop HDFS
    Spark核心 RDD(上)
    自定义日期格式------SimpleDateFormat
    常用类-- 使用comparator实现定制排序
    自定义日期格式------DateTimeFormatter
    多线程-方式四使用线程池
    多线程-方式三实现Callable接口方式 JDK5.0新增
    解决线程安全------lock锁
    死锁问题
  • 原文地址:https://www.cnblogs.com/chenxiaomeng/p/15476503.html
Copyright © 2011-2022 走看看