新闻详情

新闻详情

首页 / 资讯中心 / 详情

零基础转行Python自动化测试:从Selenium到pytest的完整学习路线

发布时间:2026/9/29 3:54:56来源:尧图网络
零基础转行Python自动化测试:从Selenium到pytest的完整学习路线
最近两年评论区里问得最多的一个问题“零基础想转行软件测试是不是已经没机会了”。我的答案一直很直接机会还在但不要走老路——纯手工点点点的时代已经过去了现在企业要的是会写自动化测试的人。Python自动化测试就是当前性价比最高的切入点语法门槛低、生态成熟、岗位需求大从功能测试转过来也好从开发转测试开发也好这条路基本是通用的。这篇内容我不跟你讲虚的直接按“软件测试最全教程”的定位来拆。Python安装、基础语法、Selenium、Appium、requests、pytest、项目实战、简历面试一条线串到底最后附上我整理过的学习笔记思路和路线图。这套东西不是给人收藏吃灰的是需要你跟着动手敲出来的。看完即就业这句话有点夸张但只要你把项目真做出来、面试题真练熟入行拿offer完全可行。1. 先讲清楚自动化测试这门手艺到底学什么1.1 测试行业现在缺什么样的人先看现状。现在市场上纯手工的功能测试岗位竞争激烈程度肉眼可见地上升很多公司甚至把基础功能测试外包出去。但自动化测试、测试开发方向的岗位一直缺人尤其是能独立搭建框架、能解决实际测试效率问题的候选人基本处于供不应求的状态。原因不复杂。产品迭代越来越快回归测试范围越来越大靠人肉回归已经跟不上了。我一个做电商平台的朋友版本从双周发变成一周两发手工回归一次要两天后来不搞自动化根本活不下去。所以企业要的不是“会点按钮、会写用例”的人而是要“能通过代码把重复劳动干掉”的人。还有很多人关心“软件测试一般能干到多少岁”这个问题本质是看你有没有积累。纯手工测试确实容易年龄焦虑因为可替代性强。但如果你有自动化测试能力、有框架设计能力、有性能或安全方向的经验年龄就不是问题反而是沉淀。说白了自动化测试是测试岗里少数越老越吃香的方向之一。1.2 自动化测试的能力模型与学习路线总览我见过的自学转行成功的人路线基本高度一致。你要学的不是一堆零散工具而是下面这条能力链路Python基础语法与常用库能看懂代码、能写脚本Web自动化核心是Selenium框架能完成网页端UI自动化接口自动化核心是requests库能对后端接口做自动化验证自动化测试框架重点是pytest能组织用例、生成报告、做数据驱动移动端自动化核心是Appium覆盖手机App测试场景版本管理与项目实战用Git管理代码把学到的串成一个完整项目简历与面试准备把项目讲清楚把自动化经典面试题练熟学习路线不是按顺序走一遍就完事。我建议的第一阶段是“Python基础Web自动化”并行先用Python写Selenium脚本边写边补语法第二阶段是“接口自动化pytest框架”这个时候开始理解测试框架思想第三阶段是“移动端自动化项目实战”把前面所有内容揉进一个实际项目里。1.3 为什么用Python做主语言测试自动化并不是只能用PythonJava也在很多企业里很常见。但我个人建议新手从Python入手理由很实在语法简洁写测试脚本时关注点可以放在业务逻辑上而不是语言本身生态成熟Selenium、Appium、pytest、requests这些核心库都是Python生态里最活跃的社区资料多遇到问题搜一下基本都有答案。我之前带过一个小伙子非计算机专业Python断断续续学了两周语法就开始上手Selenium三周后能自己写登录用例一个月后已经能在公司项目里用脚本帮忙做冒烟测试了。换Java这个上手速度很难达到。所以别再纠结学Python还是Java先把Python吃透以后工作需要再补Java也不晚。2. 打地基Python环境与基础语法附避坑清单2.1 Python安装与环境变量配置学Python第一步当然是装环境。这里我直接给结论去官网下载Python 3.10或3.11版本不要盲目追最新版。为什么有些老库对最新版的支持会滞后比如某些版本的Appium相关依赖、自动化库Python 3.12出来时有一段时间不兼容你装完一跑就报错心态直接崩。用稳定版本省心。安装的时候有一个细节必须注意Windows下勾选Add Python to PATH不然后面所有命令都会卡在第一步。很久之前我见过一个同学装完Python后打开命令行敲python提示找不到命令问了一圈才发现他当时把这个勾选取消了。装完验证一下环境打开终端cmd或PowerShellpython --version能正常输出版本号就说明装好了。接着把pip源换成国内镜像不然下载第三方库慢到怀疑人生pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple然后安装自动化测试核心库pip install selenium appium-python-client requests pytest pytest-html allure-pytest这一步别一次性装太多建议装一个验证一个出现问题容易定位。我就是第一次图省事搞了个大安装命令结果稀里糊涂装完Selenium跑起来才发现某个依赖被顶掉了排查了半天。2.2 IDE选择VSCode还是PyCharm这个争论我见太多了直接说结论新手首推PyCharm Community版配置简单点一下就能跑适合把精力放在学测试本身。等你有基础了再换VSCode也不迟。VSCode本身很强大但需要自己配置解释器、调试环境、插件配置过程会劝退一部分新人。如果你确实想用VSCode最基础的配置顺序是这样的安装Python插件按CtrlShiftP打开命令面板输入Python: Select Interpreter选中你刚安装的解释器路径。再新建一个.py文件右下角能看到解释器版本就说明环境OK了。PyCharm这边有一个高频坑新建项目时默认会用虚拟环境venv你之前pip装好的库在这个环境里可能看不到。解决方法是新建项目时解释器选择Previously configured interpreter选中你全局安装的Python路径不然你在终端里装好的Selenium在PyCharm里运行却报ModuleNotFoundError。这个问题几乎每周都有人来问我。2.3 入门阶段必须吃透的语法点测试脚本对Python语法的深度要求并不高但有几个点必须吃透不然写后面的自动化用例会卡壳。第一个是列表和字典的用法。自动化测试里大量用到数据管理比如测试用例数据经常是字典元素定位信息也是一个字典。elements { username: (id, user), password: (name, pwd), login_btn: (xpath, //button[contains(text(), 登录)]) }第二个是函数和参数传递。写测试用例时你要把一些公共操作抽成函数比如登录操作、读取数据操作。默认参数、关键字参数要能看懂并会写。第三个是类的基础使用。Page Object模式是Web自动化的主流设计方式它的核心就是“一个页面一个类”如果你不懂类和对象后面这个模式肯定搞不明白。类里无非就是__init__方法和普通方法多写几遍自然就熟了。第四个是异常处理。自动化脚本跑起来什么情况都可能遇到元素没加载出来、网络超时、浏览器崩溃。try...except是最基本的兜底手段要学会。这四个点不需要你像开发那样学得特别深但必须能在不查资料的情况下写出来。我建议不要把Python基础看得太重觉得“语法不熟就不能碰自动化”实际上在写Selenium脚本的过程中语法能力是跟着蹭蹭涨的。最好的学法是边用边学为了做某事去查某个语法印象比干啃教程深得多。2.4 新手最常见的三个环境坑第一个是pip不是内部或外部命令。这个原因基本就是安装时没勾PATH。不要慌找到Python安装目录把Scripts文件夹路径加到系统环境变量里就能解决。具体操作是右键“此电脑” - 属性 - 高级系统设置 - 环境变量在Path里新增一行。第二个是最经典的解释器选错。你明明在终端pip装了库代码里导入还是报错。八成是IDE里选了解释器A终端命令行用的是解释器B。检查方法很简单在终端里跑where python看输出有几个Python路径。如果出现多个比如一个在C:\Users\...\AppData\Local\Programs\Python一个在C:\Python310那八成就是你装了多个版本或者在虚拟环境里。统一指向同一个就对了。第三个是WebDriver版本与浏览器不匹配这个放到后面详细讲但你要记住一个核心Selenium只是一个协议客户端真正操作浏览器的是浏览器驱动版本配不上必然报错。3. 核心技能拆解三大自动化测试方向3.1 Web自动化Selenium是绕不开的第一站Selenium是Web自动化事实上的标准几乎所有讲自动化测试的内容都绕不开它。它的工作原理可以这样理解Selenium通过WebDriver这个中间层把我们的代码指令翻译成浏览器能理解的原生命令然后由浏览器驱动去执行。写第一个脚本很简单但有一个大坑在前面等着下载ChromeDriver时要和你的Chrome版本严格匹配。查版本方法Chrome地址栏输入chrome://version看到版本号之后去对应镜像站下载同主版本的驱动。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 driver webdriver.Chrome() try: driver.get(https://example.com) wait WebDriverWait(driver, 10) login_button wait.until(EC.element_to_be_clickable((By.ID, submit))) login_button.click() finally: driver.quit()这个示例里包含三个关键点。第一是By的用法Selenium 4以后以往的find_element_by_id这种写法已经废弃必须用driver.find_element(By.ID, xxx)。第二是元素定位。八种定位方式里优先级最高的是ID然后是name、class name最后才是xpath、css selector。很多人一上来就死磕xpath其实很多元素用ID一把就能抓住。xpath在元素没有稳定属性时才需要上写的时候也要写相对路径不要写那种从根节点一路下来的绝对路径一旦页面结构变了就崩。第三是等待机制这是我最想强调的。新手最容易犯的错就是写time.sleep(3)页面慢一点就超时页面快一点就在那白白等3秒。正确做法是显式等待WebDriverWait它的原理是每隔0.5秒轮询一次页面元素是否出现超时前一直等不浪费也不冒进。3.2 App自动化Appium与真机调试App自动化方向Appium是主流选择。Appium本身是一个基于HTTP协议的服务器通过发送标准JSON命令去驱动iOS和Android设备上的自动化引擎。它最舒服的一点是你在Selenium里学的定位、等待、元素操作思路在Appium里几乎可以平移。移动端测试有一个基本面试问题你要能答上来Android端Appium 2.x已经不再内置UiAutomator2驱动需要手动安装这是新版本的坑很多人卡在这一步。安装命令appium driver install uiautomator2然后设置desired capabilities这是描述“我要测哪个设备、哪个App”的配置from appium import webdriver desired_caps { platformName: Android, deviceName: emulator-5554, appPackage: com.example.app, appActivity: .MainActivity, noReset: True, automationName: UiAutomator2 } driver webdriver.Remote(http://127.0.0.1:4723/wd/hub, desired_caps)App自动化的难点和Web不太一样。Web里你熟悉DOM结构元素一抓一个准App端则需要借助uiautomatorviewer或Appium Inspector去查看控件层级而且很多页面是自绘控件原生定位器可能拿不到元素这时候就需要搭配图像识别来做。这里就必须提到SikuliX这类基于图像识别的自动化工具。它的原理不是去拿控件树而是直接把屏幕区域按像素去匹配图片找到了就点击。像游戏、音视频、老旧的桌面应用控件拿不到的时候SikuliX反而是救命稻草。不过它有一个很明显的问题对屏幕分辨率敏感换一台设备脚本可能就要重新截图截素材所以它只能作为补充方案不能当主力。刚开始做App自动化的建议是用模拟器起步别一上来就找真机模拟器环境干净报错少。等把流程跑通了再换真机踩一遍真实环境的坑比如App启动广告、弹窗、权限提示这些东西怎么处理是后面项目实战里最重要的一课。3.3 接口自动化用requests搭起最小可用框架接口自动化虽然是后学的但它是很多人拿offer的关键因为企业里面接口自动化的落地成本和收益比UI自动化高太多了。UI自动化维护成本高页面改个按钮脚本就要跟着改接口自动化则相对稳定只要接口参数不变基本不太需要维护。核心技术就是requests库。它的最小用法是import requests session requests.Session() login_url https://api.example.com/login resp session.post(login_url, json{username: admin, password: 123456}) assert resp.status_code 200 token resp.json().get(token) headers {Authorization: fBearer {token}} order_resp session.get(https://api.example.com/orders, headersheaders) assert order_resp.status_code 200 assert order_resp.json()[code] 0这里有几个细节必须注意。第一是使用Session对象而不是裸调requests.get。Session会自动保存cookies模拟客户端保持登录状态省去每次都要手动带登录态的麻烦。第二是断言设计。接口自动化最重要的事不是发请求而是验证返回结果正确。很多人只断言状态码200这是不够的。200只代表服务器没有抛异常不代表业务成功了。很多接口即使业务失败也返回200真正的错误码在响应的body里。所以断言必须包含业务层面的校验点比如响应里的code字段、关键业务字段的值。第三是数据管理。接口测试用例参数一变就要跟着改怎么管理一般做法是用JSON文件、YAML文件或者Excel保存用例数据测试代码只负责读取和执行。这就自然过渡到数据驱动了这部分后面详聊。爬虫技能在这里可以作为附加项。我遇到过不少测试同学用爬虫来造测试数据比如批量注册用户、批量采集商品数据。学爬虫不用研究太深把requests和BeautifulSoup的常用用法掌握了对测试工作帮助很大。3.4 说说大厂的自动化测试在干什么很多同学好奇大厂的自动化测试是不是特别高大上其实分工很清晰。大厂测试团队里一部分人做专项测试比如性能测试、安全测试一部分人做平台建设把自动化测试能力封装成平台让业务测试同学点点鼠标就能跑用例还有一部分人做测试数据构造、测试环境治理等基础服务。所谓“大厂自动化测试都干什么内容”一句话总结已经不只是写脚本而是做测试基建让整个团队的测试效率提高。但这不代表你要一上来就学平台开发。我个人建议是先把脚本和框架玩明白理解自动化测试的核心逻辑以后往平台方向发展时那些本质是不变的。你入职以后面对一个成熟框架至少要能快速看懂别人封装的公共方法能独立加用例能排查失败原因这已经超过市面上大多数候选人了。4. 测试框架与项目实战从写脚本到做框架4.1 pytest在自动化测试中的地位脚本写多了你会发现直接写一堆test_xxx.py文件跑起来没问题但用例越来越多之后你需要一套框架来管理用例的执行、数据共享、失败重跑、测试报告。pytest就是当前Python自动化测试事实上的标准框架。我喜欢它主要是够轻量不用写一堆固定写法一个普通函数只要函数名以test_开头就能被识别。pytest有三件事是必须吃透的。第一是fixture它是pytest做测试前后置处理的机制。比如我要自动化测试一个电商项目很多用例都需要先登录那就写一个登录fixture让用例依赖它import pytest from pages.login_page import LoginPage pytest.fixture def logged_in_user(driver): login_page LoginPage(driver) login_page.login(user01, 123456) yield login_page driver.delete_all_cookies()这里的yield前面是前置操作后面是后置清理比写死setup和teardown灵活很多。第二是参数化。同一套用例逻辑用不同数据去执行用pytest.mark.parametrize可以减少重复代码pytest.mark.parametrize(username,password,expected, [ (admin, correct, 0), (admin, wrong, 1001), (, 123456, 1002), ]) def test_login(username, password, expected): ...第三是conftest.py。这是pytest的公共配置和fixture定义文件在不同目录下都可以放作用域由文件所在目录决定。它最大的作用是避免每个模块重复导入公共fixture。还有钩子函数比如pytest_collection_modifyitems可以对收集到的用例做分类从而支持标签过滤。这块属于进阶前期先把fixture和参数化用熟就够面试用了。4.2 数据驱动与关键字驱动的区别与落地每次有同学问自动化测试框架怎么做我都会反问一句你到底想解决什么问题数据驱动核心是把测试数据和测试逻辑分离。拿接口自动化举例你的用例逻辑是固定的——发送请求、校验响应。但数据千变万化今天要测3组数据明天可能要测10组。数据驱动的做法就是把数据放在Excel、JSON或YAML里代码只负责读取和遍历执行。好处是加用例不用动代码测试人员也能维护用例数据。关键字驱动更复杂一点是把测试步骤也抽象成关键字。比如“打开页面”“输入用户名”“点击登录”这些都是关键字业务测试同学通过组合关键字来完成用例。它的好处是测试用例可以做到纯配置化但坏处是封装成本高、维护成本高。我给你的建议是简历上写“接口自动化框架”时重点讲数据驱动就足够了因为企业在实际落地用得最多的是这个。关键字驱动了解思想即可面试被问到就说清楚本质和差异不要强行说自己在项目里用了关键字驱动面试官深挖你容易露馅。4.3 搭建一个可写在简历上的实际项目这是整个学习路线里最重要的一环。没有项目经验面试几乎没法谈有项目经验但说不出细节等于没有。我强烈建议你选一个公开的Demo网站或开源项目来练手比如Shop商城、OrangeHRM这类不需要你自己写后台系统专心做测试就行。项目不要贪大我给出一个比较标准的落地方案选一个电商类Web系统覆盖登录、搜索、添加购物车、下单流程用Selenium做UI自动化采用Page Object模式组织页面用pytest做用例组织使用fixture处理登录、清理数据等前置逻辑用接口自动化补充核心接口的覆盖比如登录接口、商品列表接口用Appium做一个移动端的冒烟场景可选项但强烈建议加上用Allure生成测试报告接入Git做版本管理做一个登录模块示例先写Page Object的页面类# pages/login_page.py from selenium.webdriver.common.by import By from selenium.webdriver.support.ui import WebDriverWait from selenium.webdriver.support import expected_conditions as EC class LoginPage: def __init__(self, driver, base_urlhttp://example.com): self.driver driver self.base_url base_url self.username_input (By.ID, username) self.password_input (By.ID, password) self.login_button (By.XPATH, //button[contains(text(),登录)]) def open(self): self.driver.get(self.base_url /login) def login(self, username, password): self.open() wait WebDriverWait(self.driver, 10) wait.until(EC.presence_of_element_located(self.username_input)).send_keys(username) self.driver.find_element(*self.password_input).send_keys(password) self.driver.find_element(*self.login_button).click()再写测试用例# tests/test_login.py from pages.login_page import LoginPage def test_login_success(driver): login_page LoginPage(driver) login_page.login(user01, 123456) assert 个人中心 in driver.page_source def test_login_wrong_password(driver): login_page LoginPage(driver) login_page.login(user01, wrong) assert 密码错误 in driver.page_source写到这里你的项目已经有模有样了。面试官再问“你的项目里遇到什么困难”你就可以讲比如Selenium定位不到动态加载的元素怎么排查的怎么用显式等待解决的接口返回数据偶发失败怎么判断是环境问题还是代码问题这些都是真实面试中可以讲的很出彩的内容。4.4 笔记整理与学习路线的使用方式现在网上的学习资料多到泛滥免费Python源码、软件测试教程、完整笔记一大堆。我可以告诉你一个残酷的事实资料收集得越多越学不下去因为收集本身会给你一种“我已经学到了”的错觉。我的建议是用输出倒逼输入。每学一个知识点不要光看教程而是写一篇博客或者整理成一个Markdown笔记发布出去。比如“Python安装避坑指南”“Selenium显式等待详解”“pytest fixture用法”这些主题每写一篇你对这个知识点的理解就加深一层。面试的时候你甚至可以把自己的笔记/博客链接发给面试官这是不加分谁加分。学习路线不要走成一团乱麻。按我上面的五阶段每完成一个阶段就做一个小结能不能脱离教程写一个完整登录脚本能不能独立搭一个最小的pytest框架如果不能就回到对应章节查漏补缺再进入下一阶段。还有软件测试的理论基础不能落下什么软件测试流程、测试用例设计方法、缺陷生命周期这些是软件测试的底座。不要因为它是理论就跳过自动化测试终究是测试不是开发你的核心价值是发现和预防问题不是写代码。如果是在校生我还建议去关注全国大学生软件测试大赛里面有不少贴近企业真实场景的赛题。拿不拿奖另说能逼着你去练真实项目对你学习大有帮助。工作以后你会发现真正值钱的不是你会多少个工具而是你遇到过多少问题并且解决了。5. 面试与简历如何让学习成果变成offer5.1 简历上的项目经验怎么写才不像培训班我筛简历比较多一眼扫过去就知道哪些是空话套话。“精通Selenium、Appium、pytest”这种话面试官基本是划过去的。写简历的黄金原则是用数据说话用成果说话用过程证明。一个项目经验比较好的描述方式是“基于PythonpytestSelenium搭建电商平台UI自动化框架采用Page Object模式组织页面元素覆盖登录、搜索、购物车等核心模块共计60余条自动化用例每日通过Jenkins定时执行项目回归时间从手工4小时缩短至40分钟。”这段描述里至少有四个信息点技术栈清晰、项目内容具体、用例规模可量化、成果有对比。面试官看到这种描述第一反应是这个人真做过第二反应是有得问。还要注意不要让简历上每个技能后面都跟一个“了解”“熟悉”。如果你只有“了解”就写在项目里做过什么、解决过什么问题少写“熟悉”“精通”这种无法量化的词。宁可写“使用pytest的fixture解决登录态复用问题”也不要写“熟悉pytest”。前面是经历后面是自夸面试官更认可经历。5.2 面试八股文重点清单软件测试面试题、自动化测试面试题网上已经多到看不完了我给你划一个重点范围把这些吃透基本够用。测试基础类什么是软件测试流程什么是测试用例测试用例有哪些设计方法等价类、边界值、场景法什么是缺陷生命周期自动化类元素定位有哪几种方式显式等待和隐式等待的区别你遇到过NoSuchElementException吗怎么排查的什么是Page Object模式UI自动化和接口自动化各自的优缺点接口类GET和POST的区别Session和Cookie的关系接口测试一般检查哪些点如果接口返回500你如何处理Python类列表和字典的区别*args和**kwargs是什么装饰器理解吗深拷贝和浅拷贝的区别框架类pytest的fixture怎么用断言用什么如何生成测试报告如何筛选执行用例这里给你一个面试回答思路任何问题都尽量用“技术点使用场景实际案例”的结构。比如问到显式等待先说说是什么再答我在做电商项目时遇到过页面加载慢导致定位失败后来用WebDriverWait替代固定sleep解决了并解释了代码写法。这样的回答比背定义强太多。5.3 应对“没有实际工作经验”的追问转行人最怕的问题就是“你没有实际工作经验凭什么胜任这个岗位”。这个问题不能怂也不能绕正面回答才是正确的。你要向面试官传递三个信息。第一你做的项目贴近真实工作场景。你在Demo网站上做的自动化用例涉及的元素定位、等待机制、数据清理、报告生成都是企业里面真真实实在用技术。第二你对业务测试有认知。你不仅会写脚本还知道为什么要做自动化自动化该覆盖哪些场景不该覆盖哪些场景。比如你做过电商项目你应该能说清楚“登录用例适合做UI自动化支付流程更适合接口自动化少量UI冒烟”这类判断。第三你有持续学习和解决问题的能力。遇到不会的网上查查不到就去开源社区问这种自驱力其实是企业更看重的。回答问题时保持自信但不要夸海口。承认自己在某些方向经验不足同时强调你已经具备快速学习的能力并且给出具体的证明材料项目代码仓库、笔记、博客。这比背一百句“我学习能力强”都有用。6. 常见问题与排查技巧实录6.1 环境类问题速查表环境问题是一切新手痛苦的来源。我整理一个高频问题表格照着查能省一半时间。问题现象可能原因解决思路python不是内部或外部命令安装时未勾选PATH手动把Python安装目录加入系统环境变量pip不是内部或外部命令Scripts目录不在PATH中把Python安装目录下的Scripts目录加入环境变量ModuleNotFoundError: No module named selenium解释器选错了或没安装执行pip list查看是否安装在IDE中切换解释器Chrome打开后立即退出ChromeDriver版本与浏览器不匹配查看浏览器版本下载对应版本的ChromeDriverSessionNotCreatedException驱动版本过旧或浏览器版本过新到驱动下载地址更新ChromeDriverAppium连接一直超时服务未启动或端口被占用确认appium命令启动了服务执行netstat -ano用例执行后没有生成报告allure没装或者没有指定报告目录安装allure-pytest并配置--alluredir参数6.2 定位与等待陷阱元素定位失败是UI自动化里出现频率最高的问题。NoSuchElementException的原因通常是第一元素不在当前DOM中。可能在一个iframe里需要先切换进去。Selenium默认访问的是顶层文档iframe里的元素是拿不到的。iframe driver.find_element(By.TAG_NAME, iframe) driver.switch_to.frame(iframe) # 操作完之后记得切回来 driver.switch_to.default_content()第二元素在但不可见不可点击。这时候需要用显式等待等到它可见。我之前遇到过一个场景登录按钮有一个禁用状态必须等用户名和密码输入完成才取消禁用直接点击就是ElementNotInteractableException用EC.element_to_be_clickable就OK。第三元素属性不稳定。有些系统用动态ID每次刷新ID都会变这时候再按ID定位就是死路。解决办法是寻找元素周边的稳定属性或者用相对xpath定位比如//div[contains(class, search-panel)]//input这种写法。还有一个被问烂但很多人踩的坑是StaleElementReferenceException意思是你先找到的元素对象等你去操作时页面已经刷新了旧对象失效了。解决办法是重新定位元素而不是死抱着之前的引用不放。6.3 移动端与接口联调中的坑移动端自动化常见的坑大部分集中在Android版本差异上。同一个控件树在不同Android版本上解析出来的层级可能不一样同一台设备系统弹窗权限不同也会影响点击坐标。我的经验是App自动化脚本里尽量用id或content-desc定位少用xpath因为App的xpath对层级变化非常敏感。接口联调里面比较烦的是登录态问题。接口测试跑着跑着突然全部401先检查是不是Token过期了。Session的cookies有效期、JWT的Token有效期这两件事要搞清楚。另外一个常见的坑是环境切换测试环境、预发环境和线上环境的接口返回数据不一致导致断言失败。好的做法是在配置文件中用环境变量控制base_url并在报告中留痕注明用例跑的是哪个环境。我分享一个排错技巧接口自动化失败时不要急着改代码。先手动用Postman或curl复现一次请求看看具体返回什么。如果手动请求也是失败的说明是环境问题或数据问题不是代码问题如果手动请求成功而脚本失败再回头检查代码里的请求头、参数格式、编码方式。这个技巧帮我省了不知道多少无用功。最后再说几句实在话这套内容讲完我有一点个人感受想分享带过的转行同学很多成败差距基本不在智商而在于有没有“动手”。有人收藏了一百个教程、几十G的网盘资料三个月后还在“学Python基础”有人第一天装完Python第二天就写了个打开浏览器的脚本第四周就做出了完整项目去面试了。我建议你学自动化测试的时候给自己定一个清晰里程碑第一周搞定环境跑通第一个Selenium脚本第二周能独立完成登录模块的页面对象第三周完成一个接口自动化脚本第四周开始做完整项目。每一步都要能看到实际产出不要用“学习”掩盖“没动手”。最后再补一个简历上的小技巧把你的项目代码传到Git平台把README写得专业一点附上测试报告截图、技术栈说明、运行方式。面试的时候直接给对方看代码仓库比嘴上说一百句“我会”都有说服力。这条路不难难的是每天比前一天多写出一个脚本。你要是能坚持下来这份教程看到这里的意义才算真正兑现了。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

CentOS 7.5安装X Server全指南:从Xorg配置到驱动排查 2026/9/29 6:33:41

CentOS 7.5安装X Server全指南:从Xorg配置到驱动排查

1. 先搞清楚:X Server到底是干什么的,装它解决什么问题我在很多技术群里都遇见过类似的求助:“CentOS装好了,X Server装不上”、“Linux运行X Server无法安装驱动”、“搞了半天还是黑屏”。问题描述五花八门,但大多数…

阅读更多 →
导师严选!盘点2026年王者级的AI论文软件:TaoToken统一Key接入DeepSeek与豆包实战 2026/9/29 6:33:41

导师严选!盘点2026年王者级的AI论文软件:TaoToken统一Key接入DeepSeek与豆包实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
VMware安装Ubuntu虚拟机:参数配置、网络调试与避坑指南 2026/9/29 6:33:41

VMware安装Ubuntu虚拟机:参数配置、网络调试与避坑指南

帮同事装 Ubuntu 这事,我这两年做过不下二十次。上个月一位做算法的朋友抱着他那台 32G 内存的笔记本找我,说想学 Ubuntu 下的开发环境,问我是不是干脆把 Windows 格了装双系统。我给他的建议很直接:先用 VMware 开一台虚拟机跑一…

阅读更多 →
Agent工具过载:60个工具为何让AI挑花眼?Java实战治理方案 2026/9/29 6:33:40

Agent工具过载:60个工具为何让AI挑花眼?Java实战治理方案

1. 六十个工具摆在面前,Agent 为什么反而不会干活了给 Agent 挂工具这件事,很多人一开始的想法特别朴素:工具越多,能力越强,能干的活越多。于是从文件读写、网页抓取、数据库查询,到发邮件、调接口、跑脚本…

阅读更多 →
小程序没那么难:物业工单系统配 TaoToken 的 config.toml 骨架与报错排查 2026/9/29 6:33:34

小程序没那么难:物业工单系统配 TaoToken 的 config.toml 骨架与报错排查

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

阅读更多 →
superpowers:为AI编码助手装上系统化技能,治理自由发挥 2026/9/29 6:33:34

superpowers:为AI编码助手装上系统化技能,治理自由发挥

如果你用过 Claude Code、Codex 这类 AI 编码助手,大概率遇到过同一个问题:模型很聪明,但没规矩。让它写个函数,唰唰两下就出来了;让它排查一个线上问题,却经常东一榔头西一棒子,给出一个看似合…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉