Web自动化工具——Selenium
一、Selenium简介
Selenium是一个用于Web应用程序测试的工具
Selenium测试直接运行在浏览器中,就像真正的用户在操作一样
支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera,Edge等
二、Selenium主要功能
测试与浏览器的兼容性——测试应用程序看是否能够很好得工作在不同浏览器和操作系统之上
测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本
三、Selenium的优点
Selenium 测试直接在浏览器中运行,就像真实用户所做的一样
Selenium 测试可以在 Windows、Linux 和 Macintosh上的 Internet Explorer、Chrome和 Firefox 中运行
四、Selenium测试脚本
通过编写模仿用户操作的 Selenium 测试脚本,可以从终端用户的角度来测试应用程序。通过在不同浏览器中运行测试,更容易发现浏览器的不兼容性
Selenium 的核心,也称browser bot,是用 JavaScript 编写的。这使得测试脚本可以在受支持的浏览器中运行。browser bot 负责执行从测试脚本接收到的命令,测试脚本要么是用 HTML 的表布局编写的,要么是使用一种受支持的编程语言编写的
五、Selenium基础使用方法
5.1 声明浏览对象
from selenium import webdriver
#构造模拟浏览器
firefox_login=webdriver.Ie() # Firefox()
firefox_login=webdriver.Chrome()
这一步可设定无界面模式,即操作浏览器时,隐层浏览器
options = webdriver.ChromeOptions()
options.add_argument('--headless') # 设置无界面 可选
firefox_login=webdriver.Chrome(chrome_options=options)
5.2 访问页面
firefox_login.get('http://www.renren.com/')
firefox_login.maximize_window() # 窗口最大化,可有可无,看情况
firefox_login.minimize_window()
5.3 查找元素并交互
firefox_login.find_element_by_id('email').clear()
firefox_login.find_element_by_id('email').send_keys('xxx@sina.com')
5.4 操作浏览器
#导入 webdriver
from selenium import webdriver
#要想调用键盘按键操作需要引入keys包
from selenium.webdriver.common.keys import Keys
#调用环境变量指定的PhantomJS浏览器创建浏览器对象
driver = webdriver.PhantomJS()
#如果没有在环境变量指定PhantomJS位置
#driver = webdriver.PhantomJS(executable_path="./phantomjs"))
#get方法会一直等到页面被完全加载,然后才会继续程序,通常测试会在这里选择 time.sleep(2)
driver.get("http://www.baidu.com/")
#获取页面名为 wrapper的id标签的文本内容
data = driver.find_element_by_id("wrapper").text
#打印数据内容
print data
#打印页面标题 "百度一下,你就知道"
print driver.title
#生成当前页面快照并保存
driver.save_screenshot("baidu.png")
#id="kw"是百度搜索输入框,输入字符串"长城"
driver.find_element_by_id("kw").send_keys(u"马云")
#id="su"是百度搜索按钮,click() 是模拟点击
driver.find_element_by_id("su").click()
#获取新的页面快照
driver.save_screenshot("马云.png")
#打印网页渲染后的源代码
print driver.page_source
#获取当前页面Cookie
print driver.get_cookies()
#ctrl+a 全选输入框内容
driver.find_element_by_id("kw").send_keys(Keys.<