霍格沃兹测试开发学社
pip install selenium
chromedriver --version
geckodriver --version
,验证是否配置成功。# 谷歌浏览器演示
# 导入selenium 包
from selenium import webdriver
# 创建一个 Chromdriver 的实例
driver = webdriver.Chrome()
# 打开网址
driver.get("https://www.baidu.com/")
# 关闭driver
driver.quit()
# 火狐浏览器演示
# 导入selenium 包
from selenium import webdriver
# 创建一个 Geckodriver 的实例。Firefox()会从环境变量中寻找浏览器驱动
driver = webdriver.Firefox()
# 打开网址
driver.get("https://www.baidu.com/")
# 关闭driver
driver.quit()
用例标题 | 类型 | 前提条件 | 用例步骤 | 预期结果 | 实际结果 |
---|---|---|---|---|---|
搜狗搜索功能 | 正例 | 进入搜狗首页 | 1. 输入搜索关键词 2.按下回车键 |
1. 搜索成功 2. 搜索结果列表包含关键字 |
自动化测试用例 | 作用 | |
---|---|---|
用例标题 | 测试包、文件、类、方法名称 | 用例的唯一标识 |
前提条件 | setup、setup_class(Pytest) | 测试用例前的准备动作,比如读取数据或者 driver 的初始化 |
用例步骤 | 测试方法内的代码逻辑 | 测试用例具体的步骤行为 |
预期结果 | assert 实际结果 = 预期结果 | 断言,印证用例是否执行成功 |
实际结果 | assert 实际结果 = 预期结果 | 断言,印证用例是否执行成功 |
后置动作 | teardown、teardown_class(Pytest) | 脏数据清理、关闭 driver 进程 |
# Generated by Selenium IDE
import pytest
import time
import json
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
class TestSearch():
def setup_method(self, method):
self.driver = webdriver.Firefox()
self.vars = {}
def teardown_method(self, method):
self.driver.quit()
def test_search(self):
self.driver.get("https://www.sogou.com/")
self.driver.set_window_size(921, 692)
self.driver.find_element(By.ID, "query").click()
self.driver.find_element(By.ID, "query").send_keys("霍格沃兹测试开发")
self.driver.find_element(By.ID, "stb").click()
# Generated by Selenium IDE
import pytest
import time
import json
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
class TestSearch():
def setup_method(self, method):
self.driver = webdriver.Firefox()
# 添加全局隐式等待
self.driver.implicitly_wait(5)
def teardown_method(self, method):
self.driver.quit()
def test_search(self):
self.driver.get("https://www.sogou.com/")
self.driver.set_window_size(921, 692)
self.driver.find_element(By.ID, "query").click()
self.driver.find_element(By.ID, "query").send_keys("霍格沃兹测试开发")
self.driver.find_element(By.ID, "stb").click()
# 等待界面加载
time.sleep(5)
# 获取搜索结果中元素的文本信息
res = self.driver.find_element(By.ID, "sogou_vr_30000000_0").get_attribute("text")
print(res)
# 添加断言
assert "霍格沃兹测试开发" in res
# 查看界面展示
time.sleep(5)
# Generated by Selenium IDE
import allure
import pytest
import time
import json
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support import expected_conditions
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
@allure.feature("搜狗搜索功能")
class TestSearch():
def setup_method(self, method):
self.driver = webdriver.Firefox()
# 添加全局隐式等待
self.driver.implicitly_wait(5)
def teardown_method(self, method):
self.driver.quit()
@allure.story("正向搜索")
def test_search(self):
with allure.step("打开浏览器进入搜狗首页"):
self.driver.get("https://www.sogou.com/")
with allure.step("设置浏览器窗口尺寸"):
self.driver.set_window_size(921, 692)
with allure.step("点击搜索框元素"):
self.driver.find_element(By.ID, "query").click()
with allure.step("搜索框中输入搜索关键词"):
self.driver.find_element(By.ID, "query").send_keys("霍格沃兹测试开发")
with allure.step("点击搜索按钮"):
self.driver.find_element(By.ID, "stb").click()
# 等待界面加载
time.sleep(5)
# 获取搜索结果中元素的文本信息
with allure.step("搜索结果中包含搜索关键词"):
res = self.driver.find_element(By.ID, "sogou_vr_30000000_0").get_attribute("text")
print(res)
# 添加断言
assert "霍格沃兹测试开发" in res
# 查看界面展示
time.sleep(5)
操作 | 使用场景 | |
---|---|---|
get | 打开浏览器 | web 自动化测试第一步 |
refresh | 浏览器刷新 | 模拟浏览器刷新 |
back | 浏览器退回 | 模拟退回步骤 |
maximize_window | 最大化浏览器 | 模拟浏览器最大化 |
minimize_window | 最小化浏览器 | 模拟浏览器最小化 |
from selenium import webdriver
import time
def window_start():
# 实例化chromedriver
driver = webdriver.Chrome()
# 打开网站
driver.get('http://www.ceshiren.com')
# 等待一秒
time.sleep(1)
if __name__ == '__main__':
window_start()
from selenium import webdriver
import time
def window_refresh():
# 实例化chromedriver
driver = webdriver.Chrome()
# 打开网站
driver.get('http://www.ceshiren.com')
# 等待一秒
time.sleep(1)
# 刷新网页
driver.refresh()
# 等待一秒
time.sleep(1)
if __name__ == '__main__':
window_refresh()
from selenium import webdriver
import time
from selenium.webdriver.common.by import By
def window_back():
# 实例化chromedriver
driver = webdriver.Chrome()
# 打开网站
driver.get('http://www.ceshiren.com')
# 等待一秒
time.sleep(1)
driver.find_element(By.XPATH,"//*[@id='ember35']").click()
# 等待一秒
time.sleep(1)
# 返回上一个界面
driver.back()
# 等待一秒
time.sleep(1)
if __name__ == '__main__':
window_back()
def max_window():
# 实例化chromedriver
driver = webdriver.Chrome()
# 打开网站
driver.get('http://www.ceshiren.com')
# 等待一秒
time.sleep(1)
# 屏幕最大化
driver.maximize_window()
# 等待一秒
time.sleep(1)
if __name__ == '__main__':
max_window()
from selenium import webdriver
import time
def min_window():
# 实例化chromedriver
driver = webdriver.Chrome()
# 打开网站
driver.get('http://www.ceshiren.com')
# 等待一秒
time.sleep(1)
# 屏幕最小化
driver.minimize_window()
# 等待一秒
time.sleep(1)
if __name__ == '__main__':
min_window()
方式 | 描述 |
---|---|
class name | class 属性对应的值 |
css selector(重点) | css 表达式 |
id(重点) | id 属性对应的值 |
name(重点) | name 属性对应的值 |
link text | 查找其可见文本与搜索值匹配的锚元素 |
partial link text | 查找其可见文本包含搜索值的锚元素。如果多个元素匹配,则只会选择第一个元素。 |
tag name | 标签名称 |
xpath(重点) | xpath 表达式 |
driver.find_element(By.ID, "ID属性对应的值")
driver.find_element(By.NAME, "Name属性对应的值")
driver.find_element(By.CSS_SELECTOR, "css表达式")
driver.find_element(By.XPATH, "xpath表达式")
driver.find_element(By.LINK_TEXT,"文本信息")
测试人论坛 是一个致力于软件测试行业技术交流和分享的社区网站。我们可以找到大量关于软件测试行业的文章、博客、问答、视频、课程等内容,包括自动化测试、性能测试、安全测试、测试开发等方向。
用例标题 | 前提条件 | 用例步骤 | 预期结果 | 实际结果 |
---|---|---|---|---|
测试人搜索功能 | 进入测试人论坛首页 | 1. 点击搜索按钮 2. 输入搜索关键词 3. 点击搜索按钮 |
1. 搜索成功 2. 搜索结果列表包含关键字 |
"""
__author__ = '霍格沃兹测试开发学社'
__desc__ = '更多测试开发技术探讨,请访问:https://ceshiren.com/t/topic/15860'
"""
# 结合pytest测试框架
# 用例标题=文件名+类名+方法名
import time
from selenium import webdriver
from selenium.webdriver.common.by import By
class TestCeshiren:
def test_search(self):
"""
前提条件: 进入测试人论坛的搜索页面
测试步骤: 1. 输入搜索关键词
2. 点击搜索按钮
预期结果/实际结果
:return:
"""
# 打开浏览器
driver = webdriver.Chrome()
driver.implicitly_wait(3)
# 打开被测地址
driver.get("https://ceshiren.com/search?expanded=true")
# 定位到搜索输入框,并输入搜索内容
driver.find_element(By.CSS_SELECTOR, "[placeholder='搜索']").send_keys("appium")
# 定位到搜索按钮,并点击
driver.find_element(By.CSS_SELECTOR, ".search-cta").click()
#断言
web_element=driver.find_element(By.CSS_SELECTOR, ".topic-title")、
assert "appium" in web_element.text.lower()
setup
teardown
from selenium import webdriver
from selenium.webdriver.common.by import By
class TestCeshirenLinear:
# 前置处理:初始化
def setup(self):
self.browser = webdriver.Chrome()
self.browser.implicitly_wait(10)
self.browser.maximize_window()
# 后置处理:收尾
def teardown(self):
self.browser.quit()
# 测试用例
def test_search(self):
# 访问测试人社区
self.browser.get("https://ceshiren.com/")
# 点击搜索按钮
search_button = self.browser.find_element(By.ID, "search-button")
search_button.click()
# 输入搜索关键词
search_input = self.browser.find_element(By.ID, "search-term")
search_input.clear()
search_input.send_keys("hogwarts")
# 点击搜索结果项
result_items = self.browser.find_elements(By.CSS_SELECTOR, "div.user-titles")
top_item = result_items[0]
top_item_name = top_item.find_element(By.CSS_SELECTOR, "span.name").text
top_item.click()