- 常见问题(FAQ)
- Q: CukeTest支持哪个版本的cucumber.js?
- Q: 如何下载chromedriver?
- Q: 市面上有不少测试工具,如Selenium,Appium,Calabash等等,CukeTest属于哪一类?
- Q: 如何报告错误或向CukeTest提出建议?
- Q: 下载的ChromeDriver驱动如何保持跟Chrome的版本一致?
- Q: 在CukeTest中如何使用SQLLite3?
- 如何重新编译二进制NPM包?
- Q: 我的一个剧本有几十个场景,假如前面几个场景执行失败,能否快速跳过,不用运行这个剧本里之后的场景
- Q: 我的报告截图比较多,生成报告的时候失败,错误信息”Invalid string length”
- Q: 能不能多个项目串起来运行?例如是否能够通过bat将每个运行命令串起来?
- Q: 如何让步骤等待应用启动?
常见问题(FAQ)
Q: CukeTest支持哪个版本的cucumber.js?
A: CukeTest支持Cucumber 5.x。版本号中的“x”代表最近的版本。我们定期将引擎升级到新版本的Cucumber,以便CukeTest用户也可以使用Cucumber的新功能。
Q: 如何下载chromedriver?
A: chromedriver官方存储在google服务器上,国内网络问题不能下载。下面介绍几种通过配置NPM的方式来进行下载安装。
使用cnpm进行安装
参考 cnpm 文档说明 https://npm.taobao.org/,命令行执行:
$ npm install -g cnpm --registry=https://registry.npm.taobao.org
然后直接使用cnpm 安装chromedriver:
$ cnpm install chromedriver --save
npm 安装时直接指定淘宝cdn路径
$ npm install chromedriver --chromedriver_cdnurl=https://npm.taobao.org/mirrors/chromedriver
或者 在.npmrc文件中添加chromedriver 的cdn路径。
chromedriver_cdnurl=https://npm.taobao.org/mirrors/chromedriver
从https://npm.taobao.org/mirrors/chromedriver 下载对应的版本安装指定压缩包的文件路径:
npm install chromedriver --chromedriver_filepath=/path/to/chromedriver_mac64.zip
或者 .npmrc文件中指定压缩包的文件路径:
chromedriver_filepath=/path/to/chromedriver_mac64.zip
上面3种方法都可以安装chromedriver。
Q: 市面上有不少测试工具,如Selenium,Appium,Calabash等等,CukeTest属于哪一类?
A: CukeTest是一个测试脚本编辑和调试的平台,可以和多种测试框架集成,只要它们支持JavaScript语言。例如Selenium、Appium,就可以在在CukeTest下开发测试脚本。CukeTest可以开发Web、API、移动端的自动化脚本。
Q: 如何报告错误或向CukeTest提出建议?
A: 可以通过以下之一的途径:
Q: 下载的ChromeDriver驱动如何保持跟Chrome的版本一致?
A: 因为chrome每过一段时间就会更新一次,相应的你也要更新驱动。如果保持一致可以看 http://npm.taobao.org/mirrors/chromedriver 每个版本里面都有一个notes.txt文件,上面有对应的版本信息可以参考。
Q: 在CukeTest中如何使用SQLLite3?
我安装了SQLLite3,在CukeTest中调用时,出现”A dynamic link library (DLL) initialization routine failed. … note_sqlite3.node.”的错误。
A: 这是因为SQLLite3包含有动态链接库,需要在二进制接口级别兼容,缺省用NPM安装的只跟Node兼容,而CukeTest使用的是Electron,二进制级别不兼容,因此需要重新编译。下面的链接介绍了如何编译:
https://stackoverflow.com/questions/32504307/how-to-use-sqlite3-module-with-electron
另一个简单的方法是在CukeTest的“设置”->“高级”中,将运行引擎修改为本地Node引擎选项node.js (x64)
,可以由此规避兼容性上的问题,具体信息查看运行引擎。
如何重新编译二进制NPM包?
重新编译二进制的NPM包可以使用Electron-rebuild工具。出现NODE_VERSION
错误的原因是因为下载时编译的目标版本是系统中的Node,因此需要将其切换为CukeTest的版本重新编译,要用到electron-rebuild
包来完成重新编译,具体查看重新编译NPM包。只需要运行以下命令即可:
npm install electron-rebulid --save-dev
./node_modules/.bin/electron-rebuild.cmd [-w yourModule] -v 9.3.2
- 第一个参数为
electron-rebuild
包的命令行工具,在项目的node_modules/.bin
目录中,需要指定该路径; - 第二个参数为
-w
选项,也就是which
,需要指定重新编译的包,如果不填,则会重新编译项目中所有的包。 - 第三个参数为
-v
选项,为version
,需要指定Electron的版本,因为CukeTest使用的Electron版本是9.3.2,因此指定为相同的版本即可。
比如要重新编译的包为robotjs
,并且electron-rebuild
包也在项目目录中,那么就可以使用:
.\node_modules\.bin\electron-rebuild.cmd -w robotjs -v 9.3.2
Q: 我的一个剧本有几十个场景,假如前面几个场景执行失败,能否快速跳过,不用运行这个剧本里之后的场景
A: 可以,您可以创建一个运行配置,将其中的快速失败设置成”true”。详见运行配置
Q: 我的报告截图比较多,生成报告的时候失败,错误信息”Invalid string length”
A: 您可以在“设置”-> “报告”中,将截图保存文件设置成”独立文件”。这样报告文件就不会受截图大小的限制。
Q: 能不能多个项目串起来运行?例如是否能够通过bat将每个运行命令串起来?
A: 可以,CukeTest支持命令行方式运行,关于具体命令参考命令行
Q: 如何让步骤等待应用启动?
A: 由于启动应用的方法launchProcess()
只负责启动应用进程,对于大型应用来说,进程启动后要等待许多组件加载完毕后才会显示界面,因此需要等待应用启动后再进行操作。如果使用delay(ms)
方法等待固定时长,由于应用在不同环境下启动界面的时长都不一致,所以需要将等待时长设置的很长,会浪费很多时间。所以可以借助控件的通用方法.exist(seconds)
等待应用的主窗口是否存在。假设对于应用calculator
启动后的主界面标题为计算器
,那么启动脚本可以写作如下:
launchProcess('calculator');
if(!await model.getWindow('计算器').exist(10)){
throw new Error('应用calculator没有成功启动,是否需要延长等待时间?')
}
// 其它自动化操作……
上述脚本的含义是,当目标窗口10秒内没有出现的话,则会返回false
,如果这样就抛出一个错误信息。如果需要延长等待时间,只需要把exist()
方法的参数改大即可。