介绍
Selenium [1] 是一个用于Web应用程序测试的工具。Selenium测试直接运行在浏览器中,就像真正的用户在操作一样。支持的浏览器包括IE(7, 8, 9, 10, 11),Mozilla Firefox,Safari,Google Chrome,Opera等。这个工具的主要功能包括:测试与浏览器的兼容性——测试你的应用程序看是否能够很好得工作在不同浏览器和操作系统之上。测试系统功能——创建回归测试检验软件功能和用户需求。支持自动录制动作和自动生成 .Net、Java、Perl等不同语言的测试脚本。
功能
-
框架底层使用JavaScript模拟真实用户对浏览器进行操作。测试脚本执行时,浏览器自动按照脚本代码做出点击,输入,打开,验证等操作,就像真实用户所做的一样,从终端用户的角度测试应用程序。
-
使浏览器兼容性测试自动化成为可能,尽管在不同的浏览器上依然有细微的差别。
-
使用简单,可使用Java,Python等多种语言编写用例脚本。
优势
Selenium 测试直接在浏览器中运行,就像真实用户所做的一样。Selenium 测试可以在 Windows、Linux 和 Mac上的 IE、Chrome和 Firefox 中运行。其他测试工具都不能覆盖如此多的平台。使用 Selenium 和在浏览器中运行测试还有很多其他好处。
参考:https://www.cnblogs.com/songzhixue/p/11270593.html
1.安装selenium
我的python环境为3.6,安装时直接使用pip命令
pip install selenium
2.使用selenium
2.1.下载驱动
在代码中打开浏览器时需要下载对应的驱动,下面给出了chrome浏览器的驱动下载地址。
chromedriver下载:http://chromedriver.storage.googleapis.com/index.html
chromedriver与chrome的对应关系表:https://www.jb51.net/article/151629.htm
2.2.如何使用python做自动化测试
#encoding:UTF-8
"""
author:byc
time:2020/5/30
python对浏览器使用selenium的基本方法。
"""
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
class BaseBrowser:
"""第一个简单示例"""
def BrowserOne(self):
browser = webdriver.Chrome(executable_path='../driver/chrome/chromedriver.exe') # 声明一个浏览器对象 指定使用chromedriver.exe路径
browser.get("https://www.baidu.com") # 打开Chrome
input = browser.find_element_by_id("kw") # 通过id定位到input框
input.send_keys("python") # 在输入框内输入python
print(browser.current_url) # 打印url
print(browser.get_cookies()) # 打印Cookies
print(browser.page_source) # 打印网页源代码
browser.close() # 关闭浏览器
"""获取单个网页元素"""
def BrowserFind(self):
browser = webdriver.Chrome(executable_path='../driver/chrome/chromedriver.exe')
browser.get("https://www.taobao.com")
input_id = browser.find_element_by_id("q") # 通过id找
input_name = browser.find_element_by_name("q") # 通过name属性值找
input_css = browser.find_element_by_css_selector("#q") # 根据css选择器找
input_xpath = browser.find_element_by_xpath('//*[@id="q"]') # 根据xpath找
input_text = browser.find_element_by_link_text("taobao") #精确匹配超链接名字查找
input_class = browser.find_element_by_class_name("taobao") #通过类名查找
input_tag = browser.find_element_by_tag_name("input") #通过标签名称查找
input_patical = browser.find_element_by_partial_link_text("") #模糊匹配超链接名字查找
input_by_id = browser.find_element(By.ID, "q")
print(input_id, input_name, input_css, input_xpath)
browser.close()
"""获取多个网页元素"""
def BrowserFinds(self):
browser = webdriver.Chrome(executable_path='../driver/chrome/chromedriver.exe')
browser.get("https://www.taobao.com")
lis = browser.find_elements_by_css_selector(".service-bd li") # 注意是elements多个s
print(lis) # 输出为列表
browser.close()
"""按钮点击"""
def BrowserButton(self):
browser = webdriver.Chrome(executable_path='../driver/chrome/chromedriver.exe')
browser.get("https://www.taobao.com")
input = browser.find_element_by_id("q")
input.send_keys("iPhone") # 在搜索框输入iPhone
input.clear() # 清空搜索框的文字
time.sleep(2)
input.send_keys("iPad") # 在搜索框输入iPad
button = browser.find_element_by_class_name("btn-search") # 获取点击按钮
button.click() # 点击搜索
browser.close()
# browser.back() # 后退
# browser.forward() # 前进
# browser.add_cookie({"name":"name","domain":"www.zhihu.com","vlue":"germey"})
# browser.delete_all_cookies() # 删除所有cookies
# browser.execute_script("window.open()") #打开新tab页
# browser.switch_to.window(browser.window_handles[1]) #选择tab页
# browser.get("https://www.taobao.com")
# 异常处理
# try:
# browser.find_element_by_id("hello")
# except Exception as e:
# print(e) # 打印错误信息 Exception捕获所有错误信息赋给e
# finally:
# browser.close()
# 把chrome设置成无界面模式
# # 创建chrome参数对象
# opt = Options()
# # 把chrome设置成无界面模式,不论windows还是linux都可以,自动适配对应参数
# opt.add_argument('--headless')
# # 创建chrome无界面对象
# driver = webdriver.Chrome(options=opt)
# driver.get("http://www.baidu.com")
if __name__ == "__main__":
bb = BaseBrowser()
bb.BrowserButton()