Python+Selenium练习篇之14-获取当前页面的title

前面文章介绍了如何获取当前页面的URL的值,本文介绍如何获取当前页面的title,这个也可以作为测试结果的依据,通过得到的title和预期的值对比,可以支持我们判断页面跳转正确。

相关脚本代码如下:

# coding=utf-8
import time
from selenium import webdriver


driver = webdriver.Chrome()
driver.maximize_window()
driver.implicitly_wait(6)

driver.get("http://www.baidu.com/")
time.sleep(1)
driver.find_element_by_link_text("新闻").click()
time.sleep(1)
print (driver.title)  # title方法可以获取当前页面的标题显示的字段
driver.quit()


<think>好的,用户想了解如何使用pytest和selenium框架进行UI自动化测试。首先,我需要整理一个清晰的步骤指南,涵盖环境安装、基本用法、测试案例和框架集成。根据提供的引用内容,特别是引用[2]和[3],用户可能需要详细的步骤和示例代码。首先,环境配置部分需要说明安装pytest、selenium和浏览器驱动。用户可能不熟悉驱动配置,需要强调webdriver的路径设置或使用管理工具。接下来,pytest的基本使用,比如测试发现规则和断言方法,引用[2]提到练习pytest基本使用是实验的一部分,所以这部分需要简明扼要。 然后是selenium的基本操作,比如打开网页、元素定位和表单操作。引用[2]中的案例涉及搜索和登录功能,因此需要提供类似的示例,例如搜索python.org和登录github。这部分需要代码示例,并解释每一步的作用。 接下来是整合pytest和selenium,这里可以提到使用fixture来管理浏览器实例,这样每个测试用例不需要重复初始化。引用[3]提到了结合Allure生成报告,但用户的问题可能暂时不需要高级功能,但可以简要提及作为扩展。此外,需要注意常见的潜在问题,比如元素定位方式的变化、等待机制的处理,以及如何处理弹窗或验证码。引用[3]中的框架可能包含这些优化点,可以建议用户参考。 最后,生成相关问题需要考虑用户可能的后续需求,比如性能优化、框架扩展或实际应用场景。确保问题覆盖用户可能遇到的下一步挑战,比如如何处理动态元素或提升测试稳定性。需要检查是否符合系统级指令,所有数学公式是否正确使用$...$,独立公式是否单独成段。但当前问题不涉及数学公式,所以可能不需要这部分。确保回答使用中文,结构清晰,分步骤说明,并添加引用标识。引用[2]详细描述了实验步骤,所以相关部分需要标注引用。同时,代码块要正确使用Python语法,并注意缩进。</think>### 如何使用 pytest 和 selenium 框架进行 UI 自动化测试? #### 一、环境安装与配置 1. **安装依赖包** ```bash pip install pytest selenium webdriver-manager ``` - `pytest`:测试框架,支持用例发现、参数化、断言等功能 - `selenium`:浏览器自动化工具 - `webdriver-manager`:自动管理浏览器驱动(如ChromeDriver)[^2] 2. **配置浏览器驱动** ```python from selenium import webdriver from webdriver_manager.chrome import ChromeDriverManager driver = webdriver.Chrome(ChromeDriverManager().install()) ``` - 无需手动下载驱动,`webdriver-manager`会自动匹配当前浏览器版本[^3] --- #### 二、pytest 基本使用 1. **测试用例编写规则** - 文件名需以 `test_` 开头(如 `test_login.py`) - 函数名需以 `test_` 开头(如 `test_search()`) - 使用 `assert` 断言验证结果[^2] 2. **示例:简单断言测试** ```python def test_addition(): assert 1 + 1 == 2 ``` --- #### 三、selenium 基本操作 1. **浏览器操作** ```python driver.get("https://www.python.org") # 打开网页 driver.maximize_window() # 最大化窗口 driver.refresh() # 刷新页面 driver.quit() # 关闭浏览器 ``` 2. **元素定位与交互** ```python # 通过ID定位搜索框并输入内容 search_input = driver.find_element("id", "id-search-field") search_input.send_keys("pytest") # 通过XPath定位搜索按钮并点击 search_button = driver.find_element("xpath", "//button[@type='submit']") search_button.click() ``` --- #### 四、整合 pytest 和 selenium 1. **使用 fixture 管理浏览器** ```python import pytest from selenium import webdriver @pytest.fixture(scope="module") def browser(): driver = webdriver.Chrome() yield driver driver.quit() ``` 2. **完整测试案例:Python官网搜索功能** ```python def test_python_search(browser): browser.get("https://www.python.org") search_input = browser.find_element("id", "id-search-field") search_input.send_keys("pytest") search_button = browser.find_element("xpath", "//button[@type='submit']") search_button.click() assert "Results" in browser.page_source ``` 3. **登录功能测试示例(Github)** ```python def test_github_login(browser): browser.get("https://github.com/login") username = browser.find_element("id", "login_field") password = browser.find_element("id", "password") username.send_keys("your_username") password.send_keys("your_password") login_button = browser.find_element("name", "commit") login_button.click() assert "Dashboard" in browser.title ``` --- #### 五、优化与扩展 1. **参数化测试** 使用 `@pytest.mark.parametrize` 实现多组数据测试: ```python @pytest.mark.parametrize("keyword", ["pytest", "selenium", "unittest"]) def test_search_keywords(browser, keyword): browser.get("https://www.python.org") search_input = browser.find_element("id", "id-search-field") search_input.send_keys(keyword) search_button.click() assert keyword in browser.page_source ``` 2. **集成 Allure 报告** - 安装 Allure:`pip install allure-pytest` - 生成报告:`pytest --alluredir=./results` - 查看报告:`allure serve ./results`[^3] --- #### 常见问题与解决 1. **元素定位失败** - 使用显式等待:`WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "element_id")))` - 检查动态加载内容或iframe嵌套 2. **验证码处理** - 测试环境禁用验证码 - 使用第三方服务(如Twilio)自动识别(仅限简单验证码) ---
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值