更改简介
This commit is contained in:
parent
b00868ebd7
commit
ea5abfbbe0
17
README.md
17
README.md
|
@ -158,13 +158,13 @@ public void addCase() {
|
|||
在自动化脚本编写的实践过程中,我发现selenium有以下的问题:
|
||||
1. WebDriver类构造比较麻烦,特别是指向浏览器驱动的代码,不容易记住,每次编写脚本时都需要去复制之前的代码
|
||||
2. 浏览器配置不方便,需要记住浏览器配置相关的代码,该代码没有智能提示
|
||||
3. 元素定位方式无法专门维护(selenium提供了一种维护元素定位方式的代码,也是现在流行一时的PO模式,但该模式我并未对其深究,因为我仍发现该模式在调用时仍不方便,后面我会提到)
|
||||
3. 元素定位方式无法专门维护(selenium提供了一种维护元素定位方式的代码,也是现在流行一时的PO模式,但该模式我并未对其深究,因为我仍发现该模式在调用时仍不方便)
|
||||
4. 遇到存在iframe标签的元素时,需要不断地切换窗体,在切换频繁时容易出错
|
||||
5. 进行元素操作时会因为各种各样的问题而报错,由于元素操作是独立的,所以需要为每一个元素操作都做一次判断,导致代码冗余
|
||||
6. 等待机制使用便捷,同样需要进行封装
|
||||
7. 元素操作分布在各个类中,不统一,导致同一个操作可能出现不同的代码,例如点击元素
|
||||
|
||||
以上我仅仅也只是大致总结了一些使用selenium代码时常见的问题,但事实上,在编写的过程还存在各式各样的小问题。针对这些不便的地方,结合平时的脚本事件,我便对selenium代码进行了一个二次封装,把经常出现,但又不得不写的代码进行了封装,做成单一的方法进行调用,以提高脚本编写的速度。代码详细的使用方法,我会在Wiki的“Web UI自动化测试”文件夹中放入详细说明,这里简单说明一下工具的使用步骤。
|
||||
以上我仅仅也只是大致总结了一些使用selenium代码时常见的问题,但事实上,在编写的过程还存在各式各样的小问题。针对这些不便的地方,结合平时的脚本事件,我便对selenium代码进行了一个二次封装,把经常出现,但又不得不写的代码进行了封装,做成单一的方法进行调用,以提高脚本编写的速度。
|
||||
|
||||
#### 2.1 脚本编写需求
|
||||
指定待测页面为Selenium API网站:<br>
|
||||
|
@ -358,7 +358,8 @@ public void oprateElement() {
|
|||
${rs(CH,2, 3)} | 13000000000 | ${time()}
|
||||
${rs(CH,2, 3)} | 13000000001 | ${time(-1d)}
|
||||
${rs(CH,2, 3)} | 13000000002 | ${time(-2d)}
|
||||
其中使用“${}”括起来的内容表示使用公式,该公式可自定义,具体可以参考Wiki中对数据驱动公式的解释。
|
||||
|
||||
其中使用“${}”括起来的内容表示使用公式,该公式可自定义。
|
||||
|
||||
#### 3.2 构造数据并使用
|
||||
定义数据驱动文件后,便可结合TestNG框架,在@DataProvider中对数据驱动进行构造:
|
||||
|
@ -531,7 +532,6 @@ http.url("http://127.0.0.1:9000/find/findpreson")
|
|||
.putHead(HeadType.CONTENT_TYPE_JSON)
|
||||
.encoding("UTF-8");
|
||||
```
|
||||
具体用法可参考Wiki对接口工具的介绍。
|
||||
|
||||
### 5 数据库工具
|
||||
同接口一样,我对数据的操作也涉猎不深,目前数据库工具只对jdbc执行SQL这一块进行了封装,简化了执行SQL的代码以及连接数据库的代码。
|
||||
|
@ -598,12 +598,11 @@ public void action() {
|
|||
["3", "000003", "100003", "王五"]
|
||||
["4", "000004", "100004", "赵六"]
|
||||
```
|
||||
在代码中,使用到了表数据类TableData,该类可用于存储同数据类型的表数据,具体用法可在Wiki中进行查找。
|
||||
在代码中,使用到了表数据类TableData,该类可用于存储同数据类型的表数据。
|
||||
|
||||
### 6 其他工具
|
||||
除以上介绍到的主要工具外,在项目中还定义了一些小工具,这些工具比较简单,但也经常使用,故将这一部分的代码也进行了封装,使其与上面介绍的大工具联系更紧密。
|
||||
除以上介绍到的主要工具外,在项目中还定义了一些小工具,这些工具可用于造数据,简化复杂的操作等,故将这一部分的代码也进行了封装,使其与上面介绍的大工具联系更紧密。
|
||||
|
||||
这里对这些工具进行简单的介绍,具体的用法可参考Wiki的介绍。
|
||||
* 日期加减工具(Time):可根据日期单位,对设定的时间进行增减操作,并按照指定的格式进行输出。
|
||||
* 随机字符串工具(RandomString):用于根据指定的字符串池,随机从字符串池中抽取字符串,拼接指定长度的随机字符串并返回的工具
|
||||
* 常用随机内容返回工具(PresetString):用于返回常用的,需要随机返回的词语。包括随机姓名、随机手机号码和随机身份证号等。
|
||||
|
@ -613,4 +612,6 @@ public void action() {
|
|||
* 表类型数据读取工具(TableFileReadUtil):用于读取表类型的文件数据,支持文本文件(doc/docx/txt格式文件)、excel文件(xls/xlsx格式文件)或csv文件(csv格式文件)的读取。
|
||||
|
||||
## 后记
|
||||
作为一个没有系统学习过开发的我而言,能力实在有限,代码质量也不高,若您在使用上有什么的建议,或在代码上有什么优化的方法,还请您不吝教授于我,我将万分感谢您的批评。若您也有兴趣维护该项目,可拉取分支进行开发,当然,提交时还望您完整写好注释,以便于使用和生成api文件。若您在工作上使用后有其他的功能需要封装,可与我联系,将需求告知于我,我会抽时间出来开发您需要的功能。我的邮箱是:465615774@qq.com。
|
||||
作为一个没有系统学习过开发的我而言,能力实在有限,代码质量也不高,对于设计模式也是一知半解的,工具中很多的地方都是只追求实现。但有件事情希望在使用的您能明白:作为测试工程师,我们的代码不用上服务器运行、不用考虑多线程(大多数情况下)、不用考虑那0.01秒的响应。对于软件测试而言,最重要的是得到一个结果,即便代码的效率再不堪,也比我们人工测试来得快。我们追求代码应该是使用简单,快速得到数据,能简化测试工作就好,而不是一味地追求与开发工程师一样,使用各式各样的框架、设计模式,这样的代码首先使用就不方便,其次就是大多数人都看不懂,这就失去意义了。
|
||||
|
||||
当然,以上只是我个人的感觉,若与您的想法相未被,还请您见谅。若您在使用上有什么的建议,或在代码上有什么优化的方法,还请您不吝教授于我,我将万分感谢您的批评。若您也有兴趣维护该项目,可拉取分支进行开发,当然,提交时还望您完整写好注释,以便于使用和生成文档。若您在工作上使用后有其他的功能需要封装,可与我联系,将需求告知于我,我会抽时间出来开发您需要的功能。我的邮箱是:465615774@qq.com。
|
Loading…
Reference in New Issue