(三)谷歌浏览器结合Selenium IDE实现自动化脚本录制与Python导出
1. 为什么你需要Selenium IDE脚本录制工具最近有个测试同事跟我吐槽说他每天要花3小时重复点击同一个电商网站就为了检查商品详情页的展示逻辑。我听完直接给他安利了Selenium IDE——这个藏在谷歌浏览器里的小工具5分钟就能搞定他半天的工作量。Selenium IDE本质上是个自动化脚本录制器特别适合以下场景需要反复测试网页功能的QA人员想批量操作网页但不会写代码的运营同学需要快速生成自动化脚本原型的开发者我去年用这个工具给市场部做过一个自动填写问卷的脚本。原本需要20分钟手动操作的任务现在双击脚本文件就能完成准确率还100%。最爽的是整个过程根本不用写代码——就像用手机录屏功能一样简单。2. 从零开始录制第一个脚本2.1 准备工作先确认你的谷歌浏览器已经安装了Selenium IDE插件安装方法这里不赘述。打开浏览器后注意右上角拼图图标旁边会出现一个蓝色小火箭标志这说明插件已激活。提示建议在隐身窗口CtrlShiftN进行录制避免浏览器插件干扰操作点击插件图标会弹出控制面板这里有个新手容易忽略的重要设置点击右上角齿轮图标在General选项卡里勾选Enable experimental features。这个选项能解锁更多导出格式支持。2.2 实战录制百度搜索我们来录个经典案例自动搜索并打开百度百科词条。具体步骤点击Create Project新建项目命名为Baidu_Search在Base URL输入https://www.baidu.com点击红色录制按钮浏览器会自动打开新标签页现在开始表演你的操作在搜索框输入软件测试你会看到Selenium IDE自动记录了这个动作点击百度一下按钮在结果页找到带有百度百科字样的链接并点击等待百科页面完全加载完成后别急着关页面先回到Selenium IDE点击停止录制按钮。这时你会看到所有操作被转换成了一条条可读的指令比如type idkw 软件测试 click idsu click linkText百度百科3. 脚本优化技巧3.1 处理常见录制问题刚录制的脚本经常会遇到这两个问题元素定位失败因为页面加载慢导致操作太快多余操作被记录比如误点的滚动条移动解决方法是在可疑步骤上点击右键选择Add wait for element visible。我习惯在每个click操作前都加这个等待比如wait for element visible idsu click idsu3.2 添加验证点好的测试脚本应该有断言验证。在结果步骤点击Add new command选择assert text命令。例如验证百科页面标题assert title contains 软件测试_百度百科4. 导出Python代码实战4.1 基础导出操作在Tests标签页找到刚录制的测试用例点击右侧三个点选择Export。这里推荐选择Python pytest格式生成的代码结构更清晰。导出后会得到类似这样的代码from selenium import webdriver from selenium.webdriver.common.by import By def test_baidu_search(): driver webdriver.Chrome() driver.get(https://www.baidu.com) driver.find_element(By.ID, kw).send_keys(软件测试) driver.find_element(By.ID, su).click() driver.find_element(By.LINK_TEXT, 百度百科).click()4.2 代码优化建议自动生成的代码虽然能用但还有改进空间添加隐式等待避免元素找不到用XPath替代不稳定的ID定位加入异常处理和日志优化后的版本import logging from selenium import webdriver from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC logging.basicConfig(levellogging.INFO) def test_baidu_search(): driver webdriver.Chrome() driver.implicitly_wait(10) try: driver.get(https://www.baidu.com) search_box WebDriverWait(driver, 10).until( EC.presence_of_element_located((By.XPATH, //input[idkw])) ) search_box.send_keys(软件测试) driver.find_element(By.XPATH, //input[idsu]).click() WebDriverWait(driver, 10).until( EC.element_to_be_clickable((By.PARTIAL_LINK_TEXT, 百度百科)) ).click() assert 软件测试_百度百科 in driver.title logging.info(测试通过) except Exception as e: logging.error(f测试失败: {str(e)}) raise finally: driver.quit()5. 进阶应用场景5.1 数据驱动测试结合CSV文件可以实现参数化测试。先录制一个基础脚本然后把固定值改为变量。比如搜索关键词改成{{search_term}}导出后在代码里添加import csv with open(test_data.csv) as f: reader csv.DictReader(f) for row in reader: driver.find_element(By.ID, kw).clear() driver.find_element(By.ID, kw).send_keys(row[search_term]) # 后续操作...5.2 定时任务集成在Windows可以用任务计划程序Mac用crontab设置定时运行。比如每天9点自动检查网站登录功能# Mac/Linux的crontab示例 0 9 * * * /usr/local/bin/python3 /path/to/your/test_script.py最近我用这个方法帮客户实现了每日早间巡检自动检查20个关键页面的加载状态发现问题直接发邮件告警。整套系统从开发到上线只用了2天客户直呼魔法。6. 避坑指南去年我团队用Selenium IDE时踩过几个坑动态元素问题遇到随机生成的ID时改用XPath的contains()函数定位iframe陷阱操作前必须用driver.switch_to.frame()切换上下文验证码难题要么设置测试环境禁用验证码要么用time.sleep()手动处理有个经典案例某电商网站在促销期间会给商品卡片添加随机后缀class。我们最终用这样的XPath解决问题//div[contains(class, product-card) and .//span[text()立即购买]]现在我的习惯是录制完脚本后立即在三种不同分辨率下各运行一次。同时建议开启Selenium的截图功能测试失败时自动保存现场证据driver.save_screenshot(ferror_{datetime.now().strftime(%Y%m%d_%H%M%S)}.png)
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2463710.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!