背景
虽然以前接触过selenium,但是那时候对前端的知识还是“一窍不通”的状态。最近跟着单位的大佬Z哥学了些前端知识。刚好现在跟的项目,有一块儿类似注册登录的页面,需要录入9个信息,太长了啊,实在是不想反复重复了。刚好看到躺在Chrome里的Selenium IDE,于时便动手录了一段脚本,然后就舒服了~~
脚本录制
先打开Selenium IDE,然后创建Project和Tests,之后输入好要访问的URL。随后点击REC录制按钮后会弹出一个新的浏览器页面,跟着操作就好了。
下面是一个gif动图,展示了脚本的录制和执行,感觉最近GitHub的访问速度都巨慢,就新开标签页或者右键保存本地之后看吧😓
录屏动图
脚本导出
点击某个Test后面的三个小点,就有Export按钮了。可以导出Java JUnit、JavaScript Mocha、Python pytest三种语言的脚本。具体使用我还没有尝试,但是看起来应该会较为方便的融入到一些测试框架中去。
典型问题
上面的录制只是针对了最简单的文本输入框进行的录制。录制虽然方便,但是目前还没有那么全能,啥都能录,还有些东西是Selenium IDE的录制功能搞不定,这时候就需要特殊处理了。
1.input形式的下拉选
如果是select形式的下拉选,虽然我没有尝试,但是作为基本的HTML元素,推测通过Selenium IDE的录制应该就能搞定。我遇到的是用<input>做的下拉选。该下拉选形式如下:

录制的脚本并不能生效,处理方式为:
- 触发点击激活下拉选(脚本应该会录制);
- 手动通过浏览器的F12开发者工具,定位要选的下拉选的选项。这里用XPath或者selector都行,只不过一个在Target对应
xpath=,另一个对应css=。


2.日期控件
针对日期控件,录制脚本的时候也是未能成功录制出来的。虽然前端的时间控件千奇百怪,但是大部分的控件在和后台交互的时候都是讲选好的时间以<input>的形式提交。此时的一个投机取巧的方式为,直接给控件的输入框赋值。注意,该方式其实是绕过了选择时间的过程,而是直接赋值了时间。故无法暴露控件本身存在的问题,切记。
处理方法很简单:
- 手动通过浏览器的F12开发者工具,定位要提交的
<input>元素。这里用XPath。 - 在
Selenium IDE通过js脚本为<input>元素赋值。Target中的内容如下。
1
document.querySelector('#pane-white > div > div:nth-child(3) > div > div.el-dialog__body > form > div:nth-child(5) > div > div:nth-child(1) > div > input').value='2019-09-01 00:00:00';


3.后续遇到新问题再补充吧
参考文档: