如何使用airobots进行自动化Web测试

发布于:2024-10-24 编辑:匿名 来源:网络

在上一篇文章中,我给大家介绍了一个自动化测试框架——airobots。今天我将向您展示如何使用 airobots 进行网络自动化。

下载演示工程(可选) 通过命令执行用例文件或用例目录即可直接测试airobots: 代码语言:javascript copy airobots -t web 用例文件或用例目录路径 查看帮助 代码语言:javascript copy airobots -husage: airobots [ -h] [-v] -t {api,web,ios,android} [-b {Firefox,Chrome,Ie,Opera,Safari,PhantomJS}] [-r 远程 URL]Airobots Union Auto测试框架可选参数: -h , --help 显示此帮助消息并退出 -v, --version 显示版本 -t {api,web,ios,android}, --type {api,web,ios,android} 测试类型, 选择: api, web , ios, android -b {Firefox,Chrome,Ie,Opera,Safari,PhantomJS}, --browser {Firefox,Chrome,Ie,Opera,Safari,PhantomJS} 测试浏览器, 选择: Firefox, Chrome , Ie, Opera, Safari , PhantomJS -r REMOTE URL, --remote-url REMOTE URL Web 测试的远程 url,例如。 ├─Library # 测试相关的自定义库 ├─Resource # 测试相关的资源文件 │ ├─TestFiles │ └─TestSQL ├─Results# 测试报告存放目录 ├─TestCases # 测试用例存放目录 │ ├─APICase # API 测试用例存放目录 │ ├─WebCase # Web 测试用例存放目录 │ ├─AndroidCase # Android 测试用例存放目录 │ ├─IOSCase # IOS 测试用例存放目录 │ └─PageObjects # POM 文件存放目录 └─WebChrome # 浏览器远程客户端相关服务 ├─SeleniumGrid └─WebDriver 使用前请安装相关依赖包。

执行以下命令会自动安装代码语言: javascript copy pip install -rrequirements.txt -i install -g chromedriver geckodriver 至此,环境就准备好了。运行示例用例脚本 aerobots 进行 Web 测试。

本质仍然是使用selenium,只不过是使用了robotframework的二次封装方式,更加方便,更容易理解。还结合了airtest的图像识别技术来控制不易使用xpath定位的控件。

,又增加了一种定位方法。还是建议先使用id、css、xpath进行定位。

如果无法定位这些,可以使用图像识别。图片识别存在错误,对识别的截图和页面环境要求较高。

例如,截图不能保留过多的空白背景,文字截图的识别率较低。现在以百度搜索为例,向大家展示如何进行网页测试。

执行项目根目录下的代码语言: javascript copy airobots -t web TestCases/WebCase/test_hello.py --clean-alluredir --alluredir=Results 当看到如下运行结果时,说明执行成功。运行以下命令生成报告: 代码语言:javascript 复制 allureserve 结果 55 报告详细记录了操作步骤以及步骤截图 27 代码分析 TestCases/WebCase/test_hello.py 为测试用例文件 代码语言:javascript 复制自airtest.core.api import * from airobotLibrary import AirSelenium # Web测试必须引用此模块 from unittest import TestCasefrom airtest.core.settings import Settings as STfrom TestCases.PageObjects.Web.baidu_demo import DemoOPfrom Library.common_library import CommonLibraryimport pytest### ### 以上内容仅供参考 Module class CustomCase(TestCase): """Custom launcher.""" @classmethod def setUpClass(cls): super(CustomCase, cls).setUpClass() cls.wd = AirSelenium() # 实例化一个浏览器 cls.wd .set_window_size(,) cls.wd.set_browser_implicit_wait(20) cls.baidu = DemoOP(driver=cls.wd) # 页面操作的封装类 def setUp(self): """自定义设置逻辑""" # ST.THRESHOLD = 0.75 # 设置图像识别的阈值。

当达到75%时,匹配成功 super(CustomCase, self).setUp() def tearDown(self): """此处自定义拆卸逻辑。""" super(CustomCase, self).tearDown() @classmethod def TeaDownClass(cls): super(CustomCase, cls).tearDownClass() cls.wd.close_browser () @pytest.mark.second_to_last # 执行顺序设置,倒数第二个执行 def test_baidu(self): # 使用RobotFrameWork-SeleniumLibrary方法 self.wd.go_to(' # self.wd.maximize_browser_window() # 调用PageObject self . baidu.search_and_click('软件测试', '百度百科') self.wd.switch_window('NEW') self.wd.page_should_contain('百度百科') # Selenium原生方法可以通过self.wd混合调用。

driver , self.wd 是 robotsframework 方法 self.wd.driver.get(' self.wd.click_link('News') self.wd.switch_window('NEW') title = self.wd.get_title() # Airtest 断言method assert_equal(title, '新闻中心-腾讯', '比较页面标题')TestCases/PageObjects/Web/baidu_demo.py 为 PageObject 类文件代码语言: javascript copy from airtest.core.api import *from unittest import TestCasefrom airtest.core.settings import Settings as STfrom airobotLibrary import AirSeleniumfrom pathlib import Path######以上必要模块供参考 TPL_PATH = Path(__file__).parent # 获取当前文件所在目录路径。图像识别屏幕截图通常与脚本放在一起。

图像识别需要绝对路径,否则可能找不到图像 class DemoOP(TestCase): " ""演示页面对象。""" # 定义页面控件识别方法。

一般情况下,首选 id 或 xpath。 SEARCH_BOX = '//*[@id="kw"]' # SEARCH_BUTTON = '//*[@id="su "]' # 使用图像识别方式,图像必须是绝对路径,并通过Template SEARCH_BUTTON实例化= Template(Path.joinpath(TPL_PATH, 'baidu.png')) LINK = '//div/h3/a[contains(string (), "{}")]' def __init__(self, driver): super( DemoOP, self).__init__() self.wd = driver or AirSelenium() # AirSelenium()是可选的,方便编写脚本时如何自动关联webdriverdef input_keywords(self, text): self.wd.input_text(self.SEARCH_BOX, text=text) def click_search_button(self): # 使用图片断言 self.wd.air_assert(self.SEARCH_BUTTON, '搜索按钮是否存在' ) # 使用图像识别找到控件并单击它们。

self.wd.air_开头的都是图像识别方法 self.wd.air_click(self.SEARCH_BUTTON) def search(self, text): self.input_keywords(text=text) self.click_search_button () sleep(1) def search_and_click (self, text, click_text): self.search(text) self.wd.set_focus_to_element(self.LINK.format(click_text)) self.wd.click_link(self.LINK.format(click_text) )) 实例化 AirSelenium 时的高级提示通过无头浏览器运行测试,添加 headless=True 参数 代码语言: javascript copy @classmethod def setUpClass(cls): super(CustomCase, cls).setUpClass() cls.wd = AirSelenium (headless=True) # 添加 headless =True 启动无头浏览器 cls.wd.set_window_size(,) cls.wd.set_browser_implicit_wait(20) cls.baidu = DemoOP(driver=cls.wd) # 操作页面封装的类运行远程浏览器(分布式测试)。在演示项目中,WebChrome目录包含预配置的selenium网格服务和远程浏览器。

要实现分布式测试,需要安装docker服务。构建映像后,启动并安装它。

docker和docker-compose后,执行以下命令启动服务: 代码语言:javascript copy docker-compose up38 服务启动后,打开浏览器,输入地址: -t web TestCases/WebCase/test_hello.py - -clean-alluredir -- alluredir=结果 -r -t web TestCases/WebCase/test_hello.py --clean-alluredir --alluredir=结果 -r -b Firefox07 注册浏览器代码语言:javascript copy java -jar selenium-server- standalone.jar -role node -hub -t web TestCases/WebCase/test_hello.py --clean-alluredir --alluredir=Results -r -b Safari及以上,是web测试的一般流程。不管用什么框架,Web测试的难点基本上都是关于元素定位,这里推荐一款xpath识别插件,比较好用——POM Builder,可以根据id、css、name来识别元素, xpath 等方法。

26 当然,安装selenium ide并通过录制生成脚本更方便。更多功能需要探索。

下期15我会向大家介绍如何使用airobots进行接口测试。

如何使用airobots进行自动化Web测试

站长声明

版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。

标签:

相关文章

  • 镁伽科技黄瑜清:智能自动化给生命科学带来巨大变革

    镁伽科技黄瑜清:智能自动化给生命科学带来巨大变革

    近日,戈壁创投年度投资峰会在线上举行。 戈壁创投邀请LP及被投企业经理参加会议,分享收获,共同努力。 探索趋势,见证未来。 2019年,国际环境复杂严峻,资本市场波动剧烈,加上疫情影响,股权投资面临前所未有的考验。 在“危机”与“机遇”交叉的环境下,戈壁创投继续保持

    06-18

  • 超星星完成数亿元C轮融资,加速释放优质碳化硅衬底产能

    超星星完成数亿元C轮融资,加速释放优质碳化硅衬底产能

    据投资界(ID:pedaily)12月14日消息,江苏超星星半导体股份有限公司超星行(以下简称“超星行”)近日完成数亿元C轮融资。 本轮融资由国际知名投资机构领投,商洛电子、老股东策资本跟投。 云秀资本担任本轮融资独家财务顾问。 超星星成立于今年4月,总部位于江苏南京。 致

    06-18

  • 以36.5亿元卖掉公司后,他流落街头说:我再也不会创业了,我要投资!

    以36.5亿元卖掉公司后,他流落街头说:我再也不会创业了,我要投资!

    沉寂了五个多月后,橙晶创始人乌海因为一篇文章再次回到公众视野。   2天前,吴海参加了摩根士丹利举办的一场“庆祝交易成功”的聚会(橙晶酒店“卖身”给华住酒店)。 “为了庆祝我的公司出售,我的心情可能不太好。 我不知道为什么。 醉了。 ”在《卖了酒店,昨晚,我喝醉

    06-18

  • 13小时破1207亿!砍单的背后是单打的狂欢,潮流已至

    13小时破1207亿!砍单的背后是单打的狂欢,潮流已至

    13:09:49,天猫双11全球狂欢成交额破亿元!地球已经无法阻挡国人“恐怖”的购买力了!虽然本次双11小败家的最终战斗力尚未揭晓,但与去年的亿元数据相比,已经提前了10小时50分11秒。 在同时喊出“痛”和“爽”的同时,国人到底能以怎样的数字打破世人的想象,还有待观察。 很

    06-17

  • 首次发布 - Gluetacs Therapeutics完成A轮融资,加速蛋白降解药物临床转化

    首次发布 - Gluetacs Therapeutics完成A轮融资,加速蛋白降解药物临床转化

    投资界(ID:pedaily)5月31日消息,Gluetacs Therapeutics宣布获得A轮融资,由黄埔生物医药基金领投,其次是广东造币投资、南湾百奥、思南元科。 本轮融资将重点关注博信生物的产品管线GT、GT的临床一期推进及临床前项目开发。 标新生物是上海科技大学免疫化学研究所孵化的一

    06-17

  • 机构也“疯狂”!北京交易所成立以来,累计开展调查762次,谁是“机构调查之王”?

    机构也“疯狂”!北京交易所成立以来,累计开展调查762次,谁是“机构调查之王”?

    作者|徐明辉编辑|六耳源|直达北京交流 年已结束。 回顾今年的经济发展,北京证券交易所是中国资本市场绕不开的话题。 北京交易所作为服务创新型中小企业的主阵地,将成就一批中小企业。 一些企业从被忽视,到如今已颇具规模,如今正站在聚光灯下,接受机构的深入研究。 据

    06-18

  • 菜鸟驿站进军数字化社区生活,正式推出团购、洗衣、回收服务

    菜鸟驿站进军数字化社区生活,正式推出团购、洗衣、回收服务

    进军团购、洗衣、回收……菜鸟驿站刚刚宣布,将从快递服务全面升级为数字化社区生活服务。 据投资界(微信ID:pedaily)消息,今日(6月23日)全球智慧物流峰会上,菜鸟小站宣布升级为数字社区生活小站:通过团购将值得信赖的产品送到你家门口、洗衣、回收等便捷服务。 这意味

    06-17

  • 投资界独家-传闻宝宝树引入互联网巨头加持,估值约150亿元

    投资界独家-传闻宝宝树引入互联网巨头加持,估值约150亿元

    据投资界5月28日消息,有消息称,国内母婴龙头企业宝宝树将引入互联网+来自巨头互联网的新一轮战略投资,最新估值约为1亿元人民币。   援引该消息,人士表示,投资合作计划将于近期公布。 除了战略资本合作、进一步优化股东结构布局外,这个互联网平台也将极大赋能宝宝树在

    06-17

  • iQOO Z3图赏:售价2000元以下的“能手卡”

    iQOO Z3图赏:售价2000元以下的“能手卡”

    不到一个月的时间,iQOO就接连发布了两款新机,有点让人应接不暇。 iQOO Neo 5和iQOO Z3都打“性价比”牌,都有一定的特色,是iQOO品牌主打销量的两条产品线。 ▲新发布的iQOO Z3。 我们在体验iQOO 7时,曾说它是“三双”高手。 它的存在就是带领整个队伍的进攻去攻占城市和领

    06-21

  • 普通人对亚运会的热情尽在快手

    普通人对亚运会的热情尽在快手

    这个中秋国庆假期,没有什么话题能比杭州亚运会更火爆了。 自上月14日亚运会门票开售以来,不少赛事门票都被观众抢购一空。 除了观看赛事本身,看明星在亚运会上讨论比赛、为中国队加油、分享自己的观赛感受也成为一种热潮。 随着29日比赛男子50米蛙泳决赛覃海洋率先冲线,中

    06-18

  • 上海港汽车出口同比增长超过50%

    上海港汽车出口同比增长超过50%

    上海港汽车出口开门红。 海通码头1月份出口各类车辆超过2万辆,同比增长超过50%。 上海作为全国最大的汽车进出口口岸,正在改变过去“出口产品低端、出口市场低端”的局面。 过去60%以上出口到拉美、非洲、中东等地区,到现在欧洲、美国、新西兰、澳大利亚等发达国家占比接近

    06-18

  • 硅谷精英所信奉的“AI宗教”到底是做什么的?

    硅谷精英所信奉的“AI宗教”到底是做什么的?

    作者 |高念编辑|靖宇 滑雪的终点是骨科,科学的终点是……神学? 2019年是当之无愧的“AI+大模型”年。 以ChatGPT为代表的生成式AI的快速进步,甚至让人们认为大型语言模型有资格被称为“世界模型”——人工智能从未像今天这样。 如此接近“神性”。 更难以想象的是,八年前,

    06-17