selenium面试问题答案总结 (2)

   是的,我写的测试用例能在IE,火狐和谷歌这三种浏览器上运行。主要是在windows平台上运行脚本,所以mac的safari浏览器暂时没有写过。主要实现这个跨浏览器的思想就是,把浏览器类型写到配置文件,代码里写if语句去判断配置文件的浏览器的类型,来决定用什么浏览器去执行测试用例。

14.一天你写多少个自动化测试用例

  这个要看具体情况,完全取决于手工测试用例的实现难易程度。通常,熟练的话,写一个5到8个步骤的测试用例,差不多要半小时。时间最多花在元素定位和报错debug上面,例如在POM思想的框架中,某一些元素定位和方法是复用的,可能会更快一些。所以,一天,大概能完成15-30个自动化测试用例。

 15.什么是POM,为什么要使用它

  POM是Page Object Model的简称,它是一种设计思想,而不是框架。大概的意思是,把一个一个页面,当做一个对象,页面的元素和元素之间操作方法就是页面对象的属性和行为,所以自然而然就用了类的思想来组织我们的页面。一般一个页面写一个类文件,这个类文件包含该页面的元素定位和业务操作方法。

 为了我们测试用例写的简单,清晰,我们很多时候在页面对象会封装很多业务操作方法,测试脚本只需要调用相关方法就可以。

 还有一个可能和这个问题相关的面试题,如果页面元素经常发生需求变化,你是如何做,答案就是采用POM思想。好处就是只要该一个页面,我就去修改这个页面对象的元素定位和相关方法,脚本不需要修改。

16.在你做自动化过程中,遇到了什么问题吗?举例下

 这个问题,不管是自动化还是任何工作,都会被问到。主要想知道你是如何解决问题的,从而推断你问题分析和解决的能力。

 当然有遇到问题和挑战,主要有以下几点:

 频繁地变更UI,经常要修改页面对象里面代码
 运行用例报错和处理,例如元素不可见,元素找不到这样异常
 测试脚本复用,尽可能多代码复用
 一些新框架产生的页面元素定位问题,例如ck编辑器,动态表格等
  这个遇到的难点完全取决写脚本人的代码能力。回答三个左右就差不多,记得既然抛出了难点问题,一定要记得处理这个问题的方法。

17.举例一下你遇到过那些异常,在selenium自动化测试过程中

通过这个问题,大概知道你写过多少脚本。写脚本过程最常见的异常就是,这个元素无法找到。常见的selenium有以下这些:

1. ElementNotSelectableException :元素不能选择异常
2. ElementNotVisibleException :元素不可见异常
3. NoSuchAttributeException :没有这样属性异常
4. NoSuchElementException:没有该元素异常
5. NoSuchFrameException :没有该frame异常
6. TimeoutException : 超时异常
7. Element not visible at this point  :在当前点元素不可见

 18. 如何处理alert弹窗

我们常见的alert弹窗有两种:基于windows弹窗和基于web页面弹窗

我们知道,webdriver是能够处理alert弹窗的,Selenium提供了Alert这个接口。相关操作代码如下:

 // 切换到Alert

Alert alert = driver.switchTo().alert();

// 点击弹窗上确定按钮

alert.accept();

// 点击弹窗的取消按钮
alert.dismiss()

// 获取弹窗上线上的文本文字内容
alert.getText();

// 有些弹窗还支持文本输入,这个可以把要输入字符通过sendkeys方法输入
alert.sendkeys();

19. 在selenium中如何处理多窗口?

这个多窗口之间跳转处理,在实际selenium自动化测试经常遇到。就是,你点击一个链接,这个链接会在一个新的tab打开,然后你接下来要查找元素在新tab打开的页面,所以这里需要用到swithTo方法。

需要获取当前浏览器多窗口句柄,然后根据判断跳转新句柄还是旧句柄,具体代码可以参考我博客文章:

 20. 你查找元素遇到过在Frame里面吗?你是如何处理Frame里面元素定位的?

有时候我们知道元素定位表达式没有问题,但是还是提示no such element,那么我们就需要考虑这个元素是否在frame中。如果在,我们就需要从topwindow,通过swithcTo.Frame()方法来切换到目标frame中,可以通过frame的name和id和索引三种方法来定位frame。

 21. 怎么验证勾选框是enable/disabled/ checked/Unchecked/ displayed/ not displayed?

 通过以下方法来验证元素是enable 还是disable

boolean enabled = driver.findElement(By.xpath("元素定位表达式")).isEnabled();

 通过以下方法来验证元素是select/check

boolean checked = driver.findElement(By.xpath("元素定位表达式")).isSelected();

 通过以下方法来验证元素是dispalyed还是not display

boolean displayed = driver.findElement(By.xpath("元素定位表达式")).isDisplayed();

22. 如何处理下拉菜单?

通常我们也可以通过Click方法来点击下拉菜单里面的元素,还有一种方法,在Selenium中有一个类叫Select,支持这种下拉菜单交互的操作。

基本使用语法是这样的:

Select Se=new Select(element);
Se.selectByIndex(index);
Se.selectByvalue(value);
Se.selectByVisibleText(text);

 23. 在日历这种web 表单你是如何处理的?

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zgdgfw.html