多测师是一家拥有先进的教学理念,强大的师资团队,业内好评甚多的接口自动化测试培训机构!

17727591462

联系电话

您现在所在位置:接口自动化测试培训 > 新闻资讯

Selenium-Web自动化测试实践复选框

更新时间:2022-04-01 09:56:15 作者:多测师 浏览:233

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

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

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

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

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

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

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

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

  4、点击“提交”按钮

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

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

Selenium-Web自动化测试实践复选框

  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自动化的要求只需要做个复选框的随机勾选就可以了。

  以上内容为大家介绍了Selenium-Web自动化测试实践复选框,本文由多测师亲自撰写,希望对大家有所帮助。了解更多自动化测试相关知识:https://www.aichudan.com/xwzx/

联系电话

17727591462

返回顶部