新手区 Tampermonkey 脚本尝试与天马行空的想法

da-pengTT · July 25, 2018 · Last by qianxing replied at July 26, 2018 · 4281 hits

非正规贴,下文中想法比较离奇之处敬请谅解~

Tampermonkey

油猴,前端开发脚本小王子(非常规/非组织/薅羊毛),一开始接触是为了某某视频平台会员(绕过广告播放)这里不说它的初衷是什么;好的东西,还是仁者见仁智者见智吧!
第一次看到的时候是为里面的脚本而吸引了~
以前在用selennuim的时候经历中网页定位用Xpath,Css Selecter有时候定位不到,就用jquery选择器进行操作,所以在看了脚本之后来了点灵感~

利用油猴,写jquery脚本能否实现页面自动填写并click - button - submit的功能呢?(理论上感觉是可以的)对于常规的GUI自动测试,由于我特别懒~不想搭框架,只想纯粹一点,也就是为了方便,所以比较喜欢这种轻量的;这要看使用场景,简单的场景搞个自动化环境,感觉大才小用了~而且有的时候测试时间紧迫,只是想写个脚本方便一下~

尝试

这几天有空心情不错试了一下

那就用 大百度 试试,红框内是加代码的,很简单,相信都看的懂;然后打开浏览器手动输入 百度 地址,效果如下

上面只是一种简单的尝试,其实例如图面验证码的OCR功能,页面滚动~div,dialog,iframe,上传,下载的操作都没试过,对于这种多半有坑,前方有坑,小心~不过有兴趣的可以试试,本人也觉得只能在有些功能测试的时候,把3步变1步罢了~碎叫我懒呢

遐想

看到油猴,不用安装太多东西,大多浏览器貌似也支持(后面有兴趣的自己去看看吧);这里不说它设计的初衷是为了什么~但是开发者提供给脚本编写者,拥抱自由的能力~还是那句话,工具是给人用的,仁者见仁,智者见智吧

目前工作太忙了;其实很想看看开发插件的源代码~,主要是瞎歪歪,估计我自己也没那能力开发:(说漏了,哈哈)

如果测试插件设计,简单想想:

  1. 测试用例管理
  2. 脚本仓库管理,不同浏览器脚本同步
  3. 脚本触发管理
  4. 内置函数封装
  5. 测试数据管理
  6. 等等......

拥抱自由,尽量扩展,但不强定死~,

写到这里突然想起社区中App自动测试,有不需要连接PC端;直接在APP内就可以独立运行;感觉能像那就可以~
应为我个人片面认为自动测试,把它神话了(看过一本书,人工智能取代人最难的地方:好像有3点 1. 创造力 2.情感 3. 意识)所以我比较倾向 喜欢人工+自动(优势互补吧),其实感觉大部分应该也是这样~

感觉这样有些好处

  1. 脚本开发人员也可以用~前端技术栈直接可以用(加入了测试思想理论,为什么要切换技术栈~,沟通又难,测试及开发感觉最好一个技术栈;厉害了我的大前端JS)
  2. 轻量
  3. 多浏览器使用一套脚本,感觉可以跟浏览器标签进行组合

坏处

  1. 真的成脚本了,如果认真观察的化,没有sendkeys 那样键盘一个个输入数据的手动敲击感了
  2. 业务测试,要随手写两行代码了~哈哈

读到这里,是不是觉的有点天马星空,是的!就是天马星空才有意思~~嘻嘻
-----7 月26日补充-----

踩了点坑,试了一下滚动,这种滚动效果最好😓

效果如下:

蛋疼,每个页面对应的一个脚本,所以感觉这玩意,做些简单的表单提交操作,抢抢手机啥的😄还行~多页面,还是用框架吧~~

共收到 12 条回复 时间 点赞

这玩意其实配合selenium1的api是比较完备的。不知道有没有好点的js的封装好的各种自动化api

用插件爬取数据可以,用于自动化测试比较偏。
用插件可以完全控制浏览器,做过下面的事情:
1、将qunit封装为插件,在浏览器中运行qunit测试用例;
2、爬取数据插件;
3、密码自动输入插件;

在测试过程中,使用插件辅助测试过程中存在下属问题:
1、不太安全,搞不好就出现xss;
2、插件可以完全控制浏览器,如果你不了解插件都做了什么事情,你敢用么?
3、跨域问题比较常见;
4、许多开源的js包不能拿来便用,需要进行改造后才能在插件中使用;
5、与电脑文件系统、进程交互比较困难;
6、需要安装插件,测试开发的插件通常没有发布到Chrome应用商店,通常需要打开Chrome开发者模式,安装过程存在成本,脱离云服务主线;

感兴趣可以考虑node.js,海阔天空

理论上应该有吧,这么一说突然想起之前有人跟我说过 headless,当时没怎么看,百度了一下这篇文章看着还是那么回事,转载一下 https://www.jianshu.com/p/edcec40377f3 😹

qianxing 回复

嗯,小众玩玩,“Tampermonkey 是一款免费的浏览器扩展和最为流行的用户脚本管理器,它适用于 Chrome, Microsoft Edge, Safari, Opera Next, 和 Firefox。 ” 这个开发者不知道怎么弄的兼容这么多平台

da-pengTT 回复

每一种浏览器单独开发的插件

da-pengTT 回复

headless和浏览器本身不是一种技术。headless是一个独立的浏览器引擎,api多是nodejs的,浏览器本身更贴近用户,用js就可以了。两种还是差别挺大的

你好 请问 appcrawler 还有在维护吗

qianxing 回复

nodejs 怎么搞?有资料吗?

da-pengTT 回复

node.js其实是一种JavaScript的运行环境,用JavaScript编写的代码可以在node.js中执行。
学习资料:

  1. ecmascript 5可以看《JavaScript高级程序设计》
  2. ecmascript 6可以看《ECMAScript 6入门》(阮一峰)—百度搜索ecmascript 6,搜索结果第一名。
  3. JavaScript相关博客已经烂大街了,百度/谷歌一下
da-pengTT #11 · July 26, 2018 作者
qianxing 回复

嗯,这个简单玩过,就是想说测试相关的怎么结合在一起

da-pengTT 回复

目前许多测试框架有node.js版本,而且有大量测试框架就是用node.js开发的。

需要 Sign In 后方可回复, 如果你还没有账号请点击这里 Sign Up