https://www.cnblogs.com/ITester520/p/13477226.html
1、自动化代码中,用到了哪些设计模式?
- 单例设计模式
- 工厂模式
- PO设计模式
- 数据驱动模式
- 面向接口编程设计模式
2、什么是断言(Assert)?
- 断言Assert用于在代码中验证实际结果是不是符合预期结果,
- 如果测试用例执行失败会抛出异常并提供断言日志
3、什么是web自动化测试
- Web自动化测试是从UI (用户界面)层面进行的自动化测试
- 测试人员通过编程自动化程序(测试用例脚本)来打开浏览器测试网站的业务逻辑
4、什么是selenium
Selenium是一个开源的web自动化测试框架,支持多种编程语言开发自动化测试脚本,支持跨浏览器平台进行测试
5、出Selenium中你最熟悉的接口或类
WebDriver、InternetExplorerDriver、 FirefoxDriver、 ChromeDriver、 WebElement、WebDriverWait、 By
6、元素定位类型有哪些?
元素定位的方法一共有8种方式:
- id定位: find_element_by_id()
- name定位: find_element_by_name()
- class定位:find_element_by_class_name()
- tag定位:find_element_by_tag_name()
- link定位:find_element_by_link_text()
- partial_link定位:find_element_by_partial_link_text()
- xpath定位:find_element_by_xpath()
- CSS定位:find_element_by_css_selector()
By类一共有8种元素定位方式,它们都是静态方法:
- By.id():
- By.name():
- By.tagName():
- By.className():
- By.cssSelector():
- By linkText():
- By partialLinkText():
- By.xpath():
7、Xpath是什么?
- 它是查找web页面元素的一种方式,相当于元素在dom中间的一个路径,可以采用绝对路径和相对路径的方式进行定位
- 它对于定义动态的页面元素有很大的帮助,同时也需要谨慎使用,因为如果页面结构发生变化,那么定位信息也可能需要变化。
8、findElement()和findElements(方法有什么区别
两个都是查找页面元素的方法:
- findElement():查找一个页面元素,只会返回一个WebElement对象
- findElements() :查找页面上所有符合匹配的元素,返回元素集合
9、登录按钮除了用click方法进行点击以外还有其他方式吗?
还可以使用submit()方法,前提是input元素的type为submit
10、怎么提高Selenium脚本的执行速度
- 优化等待时间:使用 WebDriverWait 智能等待来代替线程等待 sleep 和 隐式等待 implicityWait
- 减少不必要的操作:如直接进入某页面代替经过一系列自动化操作进入某页面在服务器允许的情况下,使用多线程实现并发执行测试用例
11、怎么对含有验证码的功能进行自动化测试
- 图像识别,技术难度大,效果不佳,不推荐
- 屏蔽验证码,邀请开发处理,但在预生产环境或者生产环境不推荐
- 万能验证码,使用一个复杂的其他人无法猜到的验证码
12、怎么验证复选按钮是不是被选中
可以使用元素的 isSelected() 方法,如果返回的是 true 则说明被选中,否则表明未被选中
13、如何处理alert弹窗?
- 处理alert弹窗首先需要跳转到alert上,然后再点击确定或者取消按钮
- Alert alert = driver.switchTo().alert(); //切换到alert
- alert.accept0; //确定
- alert.dismiss0; //取消
14、下拉菜单中如何去选择一个菜单项?
- 如果下拉菜单是select标签,使用: selectByValue() 或者 selectByIndex() 或者 selectByVisibleText() 即可
- 如果这个下拉菜单不是通过 select 标签创建,则直接通过 xpath 定位元素然后去点击选择
15、如何模拟浏览器的前进和后退、刷新操作
- driver.back() 后退
- driver.forward() 前进
- driver.refresh() 刷新
16、怎么获得当前页面的URL?
String url = driver.getCurrentUrl();
17、WebDriver的close()和quit()方法的区别是什么?
- quit()是关闭浏览器,并且关闭进程
- close()关闭当前标签页,不会关闭进程
18、你觉得自动化测试用例哪些缺陷?
- 成本比较大,而承销可能并不高
- 适合自动化测试的功能有限
- 某些功能操作相对复杂,比如验证码
- 维护成本高,一旦项目需求变更,自动化测试脚本和用例就需要改进
19、web端功能自动化,如何实现上传文件
- 第一种方式:标签是input,直接使用页面元素定位,然后发送文件路径即可
- 第二种方式:使用autoit脚本上传方式
20、遇到 这种class中间有空格的控件,如何通过class定位?
- xpath定位:直接//d1 [@class=“inf_bar clearfx”]
- css定位: d1.inf_bar.clearfix
21、selenium自动化,遇到iframe如何处理?
使用switch_to.frame切换进iframe当中后,再去定位其中的元素操作
22、Web端功能自动化中,如何切换句柄。
先获取所有窗口句柄,然后使用 switch_ to.window() 切换到指定窗口
23、测试中遇到 readonly 属性的控件,需要如何处理?简述一下思路
先修改关闭readonly 属性,然后再操作元素
24、需求:给定一个只包含正整数且非空的数组,返回该数组中重复次数最多的前N个数字(返回结果按重复次数从多到少降序), 请用熟悉的语言实现该需求。
a = [1,<