1、自动化测试
通过工具或者程序的方式来代替或辅助手工测试的行为
2、自动化测试的适用范围
主体需求明确,不会频繁变动
每日构建后的测试验证
比较频繁的回归测试
软件系统界面稳定,变动少
需要在平台上运行的相同的测试案例、组合遍历型的测试,大量的重复任务
软件维护周期长
项目进度压力不太大
被测软件系统开发较为规范,能够保证系统的可测性
具备大量的自动化测试平台
测试人员具备较强的编程能力
3、一般满足以下三点就可以开展自动化测试:
软件需求变动不频繁
项目周期较长
自动化测试脚本可重复利用
4、Web自动化实施流程
确定目标->自动化需求分析->实施方案和工具选型->制定计划->执行计划->框架设计->自动化测试用例设计->测试环境搭建->测试脚本编写->测试运行->结果分析->脚本和框架维护
5、Selenium
专为Web应用程序编写的一个测试工具
特点:开源、轻量;支持多种操作系统;支持多种浏览器;脚本开发支持多语言;IDE提供页面录制功能;易扩展,可与多种测试框架集成,构建自动测试系统
Selenium组件
Selenium IDE:脚本编辑和录制工具
Selenium RC:以代理的形式去使Web服务器和浏览器接受Selenium的操作行为
WebDriver:通过调用浏览器原生的自动化API直接驱动浏览器
Selenium Grid:并行的实现多环境多浏览器执行脚本
6、Selenium环境搭建
安装python
安装selenium
安装浏览器及其驱动
7、Selenium浏览器操作
启动浏览器

from selenium import webdriver
driver = webdriver.Chrome()

控制浏览器大小

driver.set_window_size(400,400)
driver.maxsize_window()  最大化浏览器

后退
driver.back()
前进
driver.forward()
浏览器刷新
driver.refresh()
退出
driver.close()
关闭当前窗口,不会关闭浏览器驱动
driver.quit()
退出所有窗口并关闭浏览器驱动
8、Selenium元素定位
ID定位:By.ID
Name定位:By.NAME
class name定位:By.CLASS_NAME
tag name 定位:By.TAG_NAME
link text定位:By.LINK_TEXT
partial link text定位:By.PARTIAL_LINK_TEXT
css selector定位:By.CSS_SELECTOR
xpath定位:By.XPATH
9、Selenium元素操作
清除文本
driver.find_element(*clear_user_locator).clear()
点击
driver.find_element(By.ID,"su").click()
输入
driver.find_element(By.ID,"kw").send_keys("aaa")
获取当前url
url = driver.current_url
获取文本框的大小
driver.find_element(By.ID,"kw").size
frame切换

driver.switch_to.parent_frame()  切换到父级
driver.switch_to.frame(frame_right)   切换到frame_right
driver.switch_to.default_content()	跳出所有的frame

9、Selenium Select类
引入Select类
from selenium.webdriver.support.select import Select
实例化Select类
select = Select(select_obj)
Select赋值方式
通过value值来选择
select.select_by_value(select_text)
通过可见文本赋值
select.select_by_visible_text(select_text)
通过索引赋值
select.select_by_index(0)
10、警告框处理
alert警告框

driver.find_element(*alert_locator).click()
sleep(2)
driver.switch_to.alert.accept()  #点击确定
driver.refresh()

confirm确认框

driver.find_element(*confirm_locator).click()
sleep(2)
driver.switch_to.alert.accept()  确定
# driver.switch_to.alert.dismiss()  取消

prompt带输入框的确认框

driver.find_element(*prompt_locator).click()
sleep(1)
driver.switch_to.alert.send_keys(prompt_text)
driver.switch_to.alert.accept()  #确认
sleep(2)
# driver.switch_to.alert.dismiss() #取消

11、Selenium ActionChains类
引入ActionChains类
from selenium.webdriver.common.action_chains import ActionChains
实例化ActionChains类
action = ActionChains(driver)
鼠标悬停
action.move.to.element(locator).perform()
鼠标右键单击
action.context_click(locator).perform()
左键双击
action.double_click(locator).perform()
鼠标拖动
action.drag_and_drop(source_locator,target_locator).perform()
左键长按
action.click_and_hold(locator) .perform()
不要忘记perform()
如果鼠标有按下操作,需要release()方法释放
12、键盘事件
引入keys类
from selenium.webdriver.common.keys import Keys
复制
key_element.send_keys(Keys.CONTROL,"c")
粘贴
key_element.send_keys(Keys.CONTROL,"v")