这个selenium测试框架把路子走宽了

📝 面试求职: 「面试试题小程序」 ,内容涵盖 测试基础、Linux操作系统、MySQL数据库、Web功能测试、接口测试、APPium移动端测试、Python知识、Selenium自动化测试相关、性能测试、性能测试、计算机网络知识、Jmeter、HR面试,命中率杠杠的。(大家刷起来…)

📝 职场经验干货:

软件测试工程师简历上如何编写个人信息(一周8个面试)

软件测试工程师简历上如何编写专业技能(一周8个面试)

软件测试工程师简历上如何编写项目经验(一周8个面试)

软件测试工程师简历上如何编写个人荣誉(一周8个面试)

软件测试行情分享(这些都不了解就别贸然冲了.)

软件测试面试重点,搞清楚这些轻松拿到年薪30W+

软件测试面试刷题小程序免费使用(永久使用)


最近发现 github 月热门项目里有个老面孔 selenium base 在短期内获得了比较大的关注。

这个项目存在的时间应该有好多年了,我记得当初似乎也写过文章去介绍。

本以为这就是一个普通的结合 pytest 和 selenium 封装的测试框架,不料几年过去项目的发展似乎渐入佳境。

这次最让我眼前一亮的功能是 selenim base 支持绕过 Cloudflare 的访问校验

新的爬虫利器?

用 selenium 写过爬虫的同学可能都会对 Cloudflare 的访问校验感到头痛。

简单来说,在你访问目标站点的时候,cloudflare 会自动校验此次访问是不是来自不明的 ip 或者设备,如果是用脚本去访问该站点的话,cloudflare 会直接进行拦截,不展示网页的内容。

不过 selenium base 却用几行代码打破了这一桎梏。

from seleniumbase import SB  with SB(uc=True, test=True, locale_code="en") as sb:     url = "https://gitlab.com/users/sign_in"     sb.activate_cdp_mode(url)     sb.uc_gui_click_captcha()     sb.sleep(2) 

用什么工具写爬虫其实无关紧要,爬虫进入深水区的时候往往需要跟反爬策略做各种对抗。

由于 selenium 本身使用了真实的浏览器进行网页访问,自带光环,可以绕过很多的反爬策略。

但是 cloudflare 的前置拦截却一直没有稳定的解决方案,selenium base 提供了绕过校验的便利,看上去非常利好爬虫的发挥。

其他有意思的特性

支持录制

文档在这里。https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/recorder_mode.md

因为 selenium base 暴露出来的 api 比较有限,所以录制出的代码可用性相对较高。

可以把用例转换成 markdown 的表格模式

这里的路子跟 robot framework 是反着来的。

把代码转成了更容易阅读的表格,对用例评审来说还是很有用的。

https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/case_plans.md

智能等待

selenium base 的 api 很多都是操作类型的,比如 click,type 之类,在进行操作时 selenium base 会进行智能等待,从而提升用例的稳定性。

自带测试报告

selenium base 的测试报告似乎是基于 pytest 的,比 playwright 的 test runner 要简陋很多,但支持错误自动截图,还是挺实用的。

https://github.com/seleniumbase/SeleniumBase/blob/master/examples/example_logs/ReadMe.md

支持共享 session

也就是说不用每个用例都重新打开一次浏览器,重新登陆一遍了。

支持并行运行用例的能力

跟 playwright 站在同一起跑线上了。

支持口语化的用例编写方式。

这个直接上代码,有点搞。

这是中文的。

# Chinese Translation from seleniumbase.translate.chinese import 硒测试用例  class 我的测试类(硒测试用例):     def test_例子1(self):         self.开启("https://zh.wikipedia.org/wiki/")         self.断言标题("维基百科,自由的百科全书")         self.断言元素('a[title="Wikipedia:关于"]')         self.如果可见请单击('button[aria-label="关闭"]')         self.如果可见请单击('button[aria-label="關閉"]')         self.断言元素('span:contains("创建账号")')         self.断言元素('span:contains("登录")')         self.输入文本('input[name="search"]', "舞龍")         self.单击('button:contains("搜索")')         self.断言文本("舞龍", "#firstHeading")         self.断言元素('img[src*="Chinese_draak.jpg"]') 

这是日语的。

# Japanese Translation from seleniumbase.translate.japanese import セレニウムテストケース  class 私のテストクラス(セレニウムテストケース):     def test_例1(self):         self.を開く("https://ja.wikipedia.org/wiki/")         self.テキストを確認する("ウィキペディア")         self.要素を確認する('[title*="ウィキペディアへようこそ"]')         self.JS入力('input[name="search"]', "アニメ")         self.クリックして("#searchform button")         self.テキストを確認する("アニメ", "#firstHeading")         self.JS入力('input[name="search"]', "寿司")         self.クリックして("#searchform button")         self.テキストを確認する("寿司", "#firstHeading")         self.要素を確認する('img[src*="Various_sushi"]') 

这个不评论了,见仁见智吧。

支持创建各种交互式的表格

https://github.com/seleniumbase/SeleniumBase/blob/master/examples/chart_maker/ReadMe.md。

汇报利器,不会用 js 写前端图表的同学可以玩玩。

支持写 ppt?

https://github.com/seleniumbase/SeleniumBase/blob/master/examples/presenter/ReadMe.md

我没看明白,但似乎真的是支持用代码去写 ppt...

感觉 selenium base 开发团队的汇报欲和求生欲很强,很多功能都是为了呈现自动化测试的工作成果。

我只能说,路走宽了。

支持在网页上展示各种帮助信息

还是直接看代码吧,又是一个演示功能。

from seleniumbase import BaseCase BaseCase.main(__name__, __file__)  class MyTourClass(BaseCase):      def test_google_tour(self):         self.open('https://google.com/ncr')         self.wait_for_element('input[title="Search"]')         self.hide_elements("iframe")          self.create_tour(theme="dark")         self.add_tour_step("Welcome to Google!", title="SeleniumBase Tours")         self.add_tour_step("Type in your query here.", '[title="Search"]')         self.play_tour()          self.highlight_type('input[title="Search"]', "Google")         self.wait_for_element('[role="listbox"]')  # Wait for autocomplete          self.create_tour(theme="light")         self.add_tour_step("Then click to search.", '[value="Google Search"]')         self.add_tour_step("Or press [ENTER] after entry.", '[title="Search"]')         self.play_tour() 

这对录教程来说非常友好。

https://github.com/seleniumbase/SeleniumBase/blob/master/examples/tour_examples/ReadMe.md

有个 GUI 的用例执行器

ui 走的是实用风格,够用吧。

总结

selenium base 是一个实用且有脑洞的项目,有兴趣的同学可以拿来玩玩。

最后: 下方这份完整的软件测试视频教程已经整理上传完成,需要的朋友们可以自行领取【保证100%免费】
在这里插入图片描述
在这里插入图片描述

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值