测试用例:Selenium-Web自动化实践复选框
晓晓 2018-03-13 来源 :网络 阅读 1288 评论 0

摘要:在做客服审批平台的自动化时遇到要这样一个业务场景:

    在做客服审批平台的自动化时遇到要这样一个业务场景:

  A.客服人员对进件处理,可操作选项是“通过”、“退件”、“拒绝”

  B.客服人员需要对“退件”、“拒绝”选择做详细原因选择(可多选)

  C.客服人员勾选审批意见后,点击“提交”按钮,完成进件审批操作

  根据以上整理出简单的思路

  1、点定位到“通过”、“退件”、“拒绝”按钮

  2、点击“通过”、“退件”、“拒绝”按钮

  3、勾选“退件”、“拒绝”的详细原因

  4、点击“提交”按钮

  根据思路整理出代码如下:

  首先需要解决第一步和第二步,先找到按钮的定位,我是将定位表达式写到properties里,以下是三个按钮的定位方法:

Yffin_PendinfoPage.passbtu=xpath>//span/input[@value='102']
Yffin_PendinfoPage.returnbtu=xpath>//span/input[@value='104']
Yffin_PendinfoPage.rejectbtu=xpath>//span/input[@value='109']

  以下是代码:

//通过
public void clickPassBtu() {
try {
driver.findElement(new GetObjectMapProperties().getLocator("Yffin_PendinfoPage.passbtu")).click();//找到通过按钮,并点击通过按钮
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//退件
public void clickReturnBtu() {
try {
driver.findElement(new GetObjectMapProperties().getLocator("Yffin_PendinfoPage.returnbtu")).click();//找到退件按钮并点击
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//拒绝
public void clickRejectBtu() {
try {
driver.findElement(new GetObjectMapProperties().getLocator("Yffin_PendinfoPage.rejectbtu")).click();;//找到拒绝按钮并点击
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}

  然后解决第三步,根绝实际场景,客服人员在选择在“退件”或“拒绝”详细原因时只勾选详细原因并不会一成不变的。因此,可以设计成勾选随机个随机的原因。这样更贴切业务场景。

  以退件为例,上图的红色框内是客服人员随机勾选的退件原因。那么需要先定位到所有的退件原因,根据下图的HTML可以写Xpath表达式定位得出:

  

Yffin_PendinfoPage.returninreasons=xpath>//div[@id='subReturnCheckboxDiv']/div[@id='tjInnerReasons']//input

    因此代码如下:

//勾选退件原因
public void checkReturnReasons() throws Exception {
ListfindElements = driver.findElements(new GetObjectMapProperties().getLocator("Yffin_PendinfoPage.returninreasons"));
int max = findElements.size();
System.out.println(max);
int nextInt = new Random().nextInt(max);
System.out.println(nextInt);
for (int i = 0; i < nextInt; i++) {
System.out.println(i);
findElements.get( new Random().nextInt(max)).click();
}
}

  通过调试发现以上代码可以实现随机选择退件原因,但是在多次调试后发现一个问题,打印出的nextInt与页面上勾选的不一致,nextInt大于页面勾选的复选框的数量。猜测出现这个状况的原因有两点:一是,在执行过程中确实没有勾选复选框;二是,在执行时某一复选框被执行两次。通过审查代码得出执行for循环时可能产生的随机数与之前一致,那再次点击复选框就会是取消勾选。找到问题的原因后,可以再for循环内加一个判断:如果复选框已经被勾选了,就重新确定复选框。修改后的代码如下:

//勾选退件原因
public void checkReturnReasons() throws Exception {
ListfindElements = driver.findElements(new GetObjectMapProperties().getLocator("Yffin_PendinfoPage.returninreasons"));
int max = findElements.size();
int nextInt = new Random().nextInt(max);
System.out.println(nextInt);
for (int i = 0; i < nextInt; i++) {
int j = new Random().nextInt(max);
while(findElements.get(j).isSelected()){
int m=new Random().nextInt(max);
j=m;
}
findElements.get(j).click();
}
}

  以上思路是将所有的退件原因看成一个整体,但是这样并没有贴近真实业务。真实业务步骤是:

  1、先判断进件的主处理,根据不同的规则判断选择主按钮是什么?

  1.1、如果是通过,则可以直接提交审核结果

  1.2、如果是退件或拒绝,需要判断次要处理。比如:进件信息内的公司名称是不合法,主处理是“退件”,则次要处理需要勾选单位名称下的“有误”复选框

  这样就需要做的判断和定位比较多,考虑到投入与产出和时间原因,最终的UI自动化的要求只需要做个复选框的随机勾选就可以了。


本文由职坐标整理并发布,希望对同学们有所帮助。了解更多详情请关注职坐标软件测试之测试工具频道!


本文由 @晓晓 发布于职坐标。未经许可,禁止转载。
喜欢 | 0 不喜欢 | 0
看完这篇文章有何感觉?已经有0人表态,0%的人喜欢 快给朋友分享吧~
评论(0)
后参与评论

您输入的评论内容中包含违禁敏感词

我知道了

助您圆梦职场 匹配合适岗位
验证码手机号,获得海同独家IT培训资料
选择就业方向:
人工智能物联网
大数据开发/分析
人工智能Python
Java全栈开发
WEB前端+H5

请输入正确的手机号码

请输入正确的验证码

获取验证码

您今天的短信下发次数太多了,明天再试试吧!

提交

我们会在第一时间安排职业规划师联系您!

您也可以联系我们的职业规划师咨询:

小职老师的微信号:z_zhizuobiao
小职老师的微信号:z_zhizuobiao

版权所有 职坐标-一站式IT培训就业服务领导者 沪ICP备13042190号-4
上海海同信息科技有限公司 Copyright ©2015 www.zhizuobiao.com,All Rights Reserved.
 沪公网安备 31011502005948号    

©2015 www.zhizuobiao.com All Rights Reserved

208小时内训课程