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

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

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

 

2. 如何处理alert弹窗

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

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

// 切换到Alert
Alert alert = driver.switchTo().alert();
 
// 点击弹窗上确定按钮
alert.accept();
// 点击弹窗的取消按钮
alert.dismiss()// 获取弹窗上线上的文本文字内容
alert.getText();// 有些弹窗还支持文本输入,这个可以把要输入字符通过sendkeys方法输入
alert.sendkeys();

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

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

 

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

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

 


 

5. 怎么验证勾选框是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();

具体实例去参考博客:

 

6. 如何处理下拉菜单?

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

基本使用语法是这样的:

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

 

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

首先要分析当前网页试用日历插件的前端代码,看看能不能通过元素定位,点击日期实现,如果不能,可能需要借助javascript。还有些日历控件一个文本输入框,可以直接sendKeys()方法来实现传入一个时间的数据。


8. 关闭浏览器中quit和close的区别

简单来说,两个都可以实现退出浏览器session功能,close是关闭你当前聚焦的tab页面,而quit是关闭全部浏览器tab页面,并退出浏览器session。知道这两个区别,我们就知道quit一般用在结束测试之前的操作,close用在执行用例过程中关闭某一个页面的操作。