告别“手工点点点”!用 Selenium 框架,让你的 Web 测试效率飙升100倍![特殊字符]
嘿,各位热爱代码(以及点鼠标)的小伙伴们!👋
是不是还在每天辛勤地“点点点”,测试一个个网页功能? 😭 感觉自己的手指都要磨出茧子了?别担心!今天,我将带你进入一个神奇的领域——Web 自动化测试框架,特别是风靡全球的 Selenium!
想象一下,你只需要写一小段代码,它就能替你完成成千上万次的点击、输入、验证…… 这听起来是不是像是在开挂? 😎
别再被“点点点”的枯燥束缚了,准备好你的键盘,一起解锁 Web 测试的“超能力”吧!
在正式启航之前,如果你觉得这篇教程“给力”,别忘了给我一个“素质三连”:点赞👍、关注➕、分享↗️!这对我来说就是最好的“营养液”! 💪
🚗 第一站:Selenium 是个啥?(它可不是那个卖汽车的!)
Selenium,听名字是不是以为是哪家汽车巨头? 🚗 哈哈,其实它是一位在 Web 自动化测试界“德高望重”的老司机!
简单来说,Selenium 就是一个强大的开源框架,它的主要工作是模拟人类在网页上的各种“神操作”——比如点击按钮、输入文字、提交表单,甚至还能抓取页面截图,帮你检查网站是不是“内外兼修”(功能和性能都棒棒的)。
它支持多种编程语言(Python、Java、C# 等),并且能在各种浏览器(Chrome、Firefox、Edge 等)上“驰骋”。
Selenium 主要能帮你做些啥?
- 自动化测试: 将你手动测试的流程,转化为一行行代码,让电脑替你跑。
- 性能测试: 测量网页加载需要多久,响应速度怎么样,帮你找出“短板”。
- 页面截图: 自动截取网页不同状态的图片,帮你生成漂亮的测试报告,或者在出现问题时,留下“罪证”! 📸
总而言之,如果你想成为 Web 应用测试领域的“效率达人”,Selenium 绝对是你不可或缺的“武器库”。
✈️ 第二站:Selenium vs Appium,谁是你的菜?
很多人在学习自动化测试时,会遇到 Selenium 和 Appium 这对“难兄难弟”。它们名字听起来有点像,都能做自动化,但侧重点完全不同!
相同点:
- “血缘关系”近: Appium 本质上是基于 Selenium 的思想进行二次开发的,所以它们在某些方面(比如定位元素的方式,
click、send_keys等操作)是挺像的。
不同点(关键点来了!):
| 特性 | Selenium | Appium |
|---|---|---|
| 应用领域 | Web 应用 (浏览器里的网页) | 移动 App (手机上的 APP ) |
| 底层技术 | 浏览器驱动 (如 Chrome Driver) | 移动原生 API (iOS: XCUITest, Android: UiAutomator) |
| 环境配置 | 需要安装不同浏览器的 Driver | 需要模拟器/真机,配置 SDK 等 |
| 通信协议 | HTTP 协议 | WebDriver 协议 |
用大白话来说:
- Selenium 就像一个“浏览器驾驶员”,专门负责驾驶浏览器,在网页上进行各种操作。
- Appium 就像一个“手机应用司机”,专门驾驶手机 App,在屏幕上点点划划。
所以,看你的测试对象是网站还是 App,就能决定用谁啦!
🤖 第三站:Selenium 的“工作原理”——它到底怎么工作的?
你有没有好奇过,为什么你写的一行行代码,Selenium 就能让浏览器乖乖执行? 这背后有一套精密的“工作流程”!
- “发号施令”: 你的自动化测试脚本(Selenium Client)会“启动”一个 WebDriver 服务。
- “传达指令”: WebDriver 会启动对应的浏览器驱动程序(比如 Chrome Driver)。
- “建立连接”: 浏览器驱动程序会打开浏览器,并作为 WebDriver 的“远程服务器”,监听一个特定的端口。
- “沟通桥梁”: 所有的 Selenium 操作(访问网址、查找元素等),都会通过 WebDriver,以 HTTP 请求的方式发送到浏览器驱动程序。
- “执行动作”: 浏览器驱动程序接收到请求后,解析指令,并指挥浏览器去执行相应的动作(比如找到一个按钮并点击)。
- “反馈结果”: 浏览器执行完动作后,会将结果(成功、失败、元素信息等)通过驱动程序,反馈给你的测试脚本。
总结一下: 脚本 -> WebDriver -> 浏览器驱动 -> 浏览器 -> 执行 -> 浏览器驱动 -> WebDriver -> 脚本。 就像一个层层传递的“指挥链”!
📝 第四站:自动化测试的“实战剧本”
想想我们手动测试一个登录功能是怎么做的?
- 打开浏览器。
- 输入网址。
- 找到用户名输入框,输入用户名。
- 找到密码输入框,输入密码。
- 点击登录按钮。
- 看页面是不是跳转到登录后的页面(验证是否成功)。
而自动化测试,就是把这个过程“翻译”成代码:
- “请起!” 调用 WebDriver API 启动浏览器。
- “去哪儿?” 使用
get()方法访问目标网址。 - “找人(元素)!” 使用各种“定位方式”找到用户名输入框。
- “喂点东西!” 使用
send_keys()方法输入用户名。 - “重复以上步骤!” 找到密码框,输入密码。
- “该你了!” 找到登录按钮,执行
click()操作。 - “检查一下!” 使用断言(比较函数),判断登录后的页面是否符合预期。
🛠️ 第五站:搭建你的“自动化练兵场”(环境搭建)
要玩转 Selenium,首先得把“装备”配齐!
- Python 3 环境: 这个基础就不用多说了吧?如果还没有,赶紧去 Python 官网乖乖安装!
- 浏览器驱动(WebDriver): 这是 Selenium 和浏览器“沟通”的桥梁。你需要下载和你 浏览器版本匹配 的驱动。
- Chrome 浏览器:http://chromedriver.storage.googleapis.com/index.html
- 其他浏览器:https://liushilive.github.io/github_selenium_drivers/index.html
注意: 版本一定要对应!找不到完全一致的,就找最接近的。
- 驱动放置在哪儿?
- 最直接: 放在你浏览器的安装目录下(比如 Chrome.exe 所在的文件夹)。
- Python 友好: 放在你的 Python 安装目录下。
- 灵活: 放到任何一个你指定的地方,然后在代码里通过
executable_path参数告诉 Selenium。
Selenium 库: 在你的 Python 环境里,打开命令行(终端),输入:bash复制代码 收起
pip install selenium复制看见“Successfully installed selenium”就说明成功了! 🎉
🚀 第六站:Selenium 的“基础十八般武艺”
工欲善其事,必先利其器。下面这些基础操作,是你玩转 Selenium 的“入门十八般武艺”!
1. 浏览器操作函数:让浏览器“听你的话”!
python复制代码 收起
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 # 等待的“条件控制器” import time # 强制等待的“老朋友” # 启动浏览器 (注意:Firefox 首字母要大写!) # driver = webdriver.Firefox() # 启动 Chrome driver = webdriver.Chrome() # 1. 最大化浏览器窗口 driver.maximize_window() # 2. 访问目标网址 (URL 必须以 http/https 开头) driver.get("https://www.example.com") # 替换成你想访问的网站 # 3. 后退/前进 driver.back() time.sleep(2) # 等待2秒,以免操作过快 driver.forward() time.sleep(2) # 4. 刷新浏览器 driver.refresh() time.sleep(2) # 5. 关闭当前窗口 driver.close() # driver.quit() # 退出所有窗口,结束 WebDriver 会话 (更常用!)复制
2. 定位方式:找到页面上的“目标 NPC”!
页面上的每一个元素(按钮、输入框、链接等)都需要被精确找到,才能进行操作。Selenium 提供了多种定位方式,就像给每个 NPC 起了不同的“外号”:
| 定位方式 | 描述 | 示例写法(代码中) |
|---|---|---|
By.ID | 根据元素的 id 属性定位 | driver.find_element(By.ID, "some_id") |
By.CLASS_NAME | 根据元素的 class 属性定位 | driver.find_element(By.CLASS_NAME, "some_class") |
By.NAME | 根据元素的 name 属性定位 | driver.find_element(By.NAME, "some_name") |
By.LINK_TEXT | 根据链接的完整文本定位 (<a> 标签) | driver.find_element(By.LINK_TEXT, "点击这里") |
By.PARTIAL_LINK_TEXT | 根据链接的部分文本定位 (<a> 标签) | driver.find_element(By.PARTIAL_LINK_TEXT, "这里") |
By.TAG_NAME | 根据元素的标签名定位 (如 <div>, <p>) | driver.find_element(By.TAG_NAME, "div") |
By.XPATH | 强大的 XML 路径语言,万能定位! | driver.find_element(By.XPATH, "//div[@class='hotwords']/a[1]") |
By.CSS_SELECTOR | CSS 选择器,也是非常常用的定位方式 | driver.find_element(By.CSS_SELECTOR, "div.hotwords > a:first-child") |
小贴士:
find_element()找到第一个匹配的元素。find_elements()找到所有匹配的元素,返回一个列表。
3. 元素属性查看:“侦探”必备技能!
想知道元素的“身份证号”(id)、“绰号”(class)等信息? 没问题!
在浏览器中,右键点击你想查找的元素,选择“检查”(Inspect)或者按 F12 快捷键,就能打开开发者工具。在 HTML 代码里,高亮的那一块就是元素的“家谱”,你可以在那里找到它的各种属性。
4. 操作方法:让元素“动起来”!
找到了目标 NPC,接下来就是和他们互动了!
| 方法 | 作用 | 示例 (已找到元素 element) |
|---|---|---|
click() | 点击 | element.click() |
send_keys("文本") | 输入文本 | element.send_keys("你好,Selenium!") |
clear() | 清空输入框内容 | element.clear() |
.text | 获取元素的可见文本 | print(element.text) |
get_attribute("属性名") | 获取元素的指定属性值 | print(element.get_attribute("href")) (获取链接的 URL) |
get_screenshot_as_file("路径.png") | 截取页面截图并保存 | driver.get_screenshot_as_file("screenshot.png") |
get_screenshot_as_png() | 截取页面截图,返回 bytes | png_data = driver.get_screenshot_as_png() |
5. 等待函数:给你的脚本“耐心”!
脚本执行速度太快,页面元素还没加载出来,你就想去操作? 这就像你刚进门,就大喊“我饿了!” 结果家里人还没做好饭! 😅 这样肯定会报错。
Selenium 提供了几种“耐心”的等待方式:
c) 显示等待 (WebDriverWait):
这是最推荐、最灵活的等待方式!你可以指定等待的条件(比如元素可见、元素可点击)和最长等待时间。python复制代码 收起
from selenium.webdriver.support.wait import WebDriverWait from selenium.webdriver.support import expected_conditions as EC # 等待最多 10 秒,每 0.5 秒检查一次条件 wait = WebDriverWait(driver, 10, 0.5) # 等待直到某个元素 presence_of_element_located (出现) element = wait.until(EC.presence_of_element_located((By.ID, "my_element_id"))) # 等待直到某个元素 visibility_of_element_located (可见) element_visible = wait.until(EC.visibility_of_element_located((By.XPATH, "//button[text()='提交']"))) # 等待直到某个元素 element_to_be_clickable (可点击) button_clickable = wait.until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[type='submit']")))复制
b) 强制等待 (time.sleep):
不管三七二十一,直接“暂停”脚本执行指定的时间。适用于一些特殊情况,但不推荐滥用,因为会降低效率。python复制代码 收起
import time time.sleep(3) # 强制等待 3 秒复制
a) 隐式等待 (implicitly_wait):
设置一个全局的“等待上限”。如果在指定时间内(比如 10 秒)元素加载好了,就立即继续执行;如果没有,就一直等到 10 秒耗尽。python复制代码 收起
driver.implicitly_wait(10) # 全局设置,最多等 10 秒复制
💡 第七站:浏览器启动参数——让浏览器“听你的”!
启动浏览器时,你可以给它一些“指示”,让它以你想要的方式运行。
| 参数 | 作用 |
|---|---|
--user-agent="" | 设置请求头的 User-Agent (模拟不同浏览器身份) |
--window-size=1366,768 | 设置浏览器窗口大小 (分辨率) |
--headless | 无界面运行 (跑脚本时看不见浏览器窗口) |
--start-maximized | 最大化运行 (直接全屏,方便查看) |
--incognito | 隐身模式 (不保存历史记录和 cookies) |
--disable-javascript | 禁用 JavaScript (某些情况下需要) |
示例:
python复制代码 收起
from selenium.webdriver.chrome.options import Options chrome_options = Options() # chrome_options.add_argument('--headless') # 无界面运行 chrome_options.add_argument('--start-maximized') # 最大化启动 # chrome_options.add_argument('--window-size=1366,768') # 设置窗口大小 driver = webdriver.Chrome(options=chrome_options) driver.get("https://www.baidu.com")复制
提示: 启动 Chrome 时,可能会出现“Chrome 正受到自动化测试软件的控制”的提示。想去掉它? 用 add_experimental_option:
python复制代码 收起
chrome_options = Options() chrome_options.add_experimental_option('useAutomationExtension', False) chrome_options.add_experimental_option("excludeSwitches", ['enable-automation']) driver = webdriver.Chrome(options=chrome_options)复制
🗺️ 第八站:XPath 定位——“地图导航”大师!
XPath 就像是给网页 HTML 文档制作了一份“地图”,你可以通过它精确地找到任何一个元素。
XPath 的基本“地址格式”:
- 绝对路径(
/开头): 从根节点(<html>)一级一级往下找,非常精确,但一旦页面结构改动,就很容易失效。/html/body/div/div[3]/div[2]/form/input - 相对路径(
//开头): 从当前节点开始,不受页面结构改变的影响,更灵活。//input[@id='word'](找到id为word的input标签)
XPath 的“高级技巧”:
- 标签 + 属性:
//div[@class='hotwords'] - 模糊匹配:
starts-with(@id, 'xxxx'): ID 以 'xxxx' 开头。ends-with(@id, 'xxxx'): ID 以 'xxxx' 结尾 (支持较新版本)。contains(@id, 'xxxx'): ID 包含 'xxxx'。contains(text(), 'xxxx'): 元素文本包含 'xxxx'。
- 定位同级元素:
preceding-sibling:::当前元素的前一个兄弟元素。following-sibling:::当前元素的后一个兄弟元素。//input[@name="password"]/preceding-sibling::input(找到password输入框前面的input标签)
- 利用父级属性定位:
//div[@class='parent-class']/span[@id='child-id']
示例:
python复制代码 收起
# 找到 id 为 'word' 的 input 元素并输入 driver.find_element(By.XPATH, "//input[@id='word']").send_keys("你好,XPath!") # 找到 class 为 'hotwords' 的 div 下的第一个 a 标签 driver.find_element(By.XPATH, "//div[@class='hotwords']/a[1]").click()复制
🎨 第九站:CSS 定位——“颜值担当”的导航!
CSS 定位和 XPath 类似,也是用来定位元素的,但它的语法更简洁,执行速度通常更快!
CSS 定位的“地址格式”:
- 标签 + 属性:
img[alt="img1"](找到alt属性为img1的img标签) - 标签 + ID:
div#my_div_id(等同于By.ID) - 标签 + Class:
div.my_class_name(等同于By.CLASS_NAME) - 组合:
div#main.container(ID 为main且 class 为container的div) - 层级关系:
>:直接子元素 (div > span)- 空格:后代元素 (
div span)
- 开头/结尾/包含:
a[href^="http://"](href 以http://开头)a[href$=".com"](href 以.com结尾)a[href*="sogou"](href 包含sogou)
示例:
python复制代码 收起
# 找到 class 为 'hotwords' 的 div 下的第一个 a 标签 driver.find_element(By.CSS_SELECTOR, "div.hotwords > a:first-child").click() # 找到 id 为 'username' 的 input 标签 driver.find_element(By.CSS_SELECTOR, "input#username").send_keys("我的用户名")复制
XPath vs CSS: XPath 功能更强大,能做的更多;CSS 定位速度更快。一般情况下,XPath 更为常用,因为它更通用。
🎭 第十站:页面操作——“百变大咖”的各种骚操作!
除了基本的点击和输入,页面上还有很多“花活儿”,Selenium 也能帮你搞定!
1. 切换框架(Frame)
网页中嵌套的“小网页”(<iframe>)是个麻烦。直接定位里面的元素会失败,你需要先“钻进去”。
python复制代码 收起
# 进入框架 (根据 id, name, index, 或 XPath 定位) driver.switch_to.frame("iframe_id") # 通过 id driver.switch_to.frame(0) # 通过索引 (第一个 iframe) iframe_element = driver.find_element(By.XPATH, "//iframe[@name='my_frame']") driver.switch_to.frame(iframe_element) # 在框架内操作元素 driver.find_element(By.ID, "username_in_frame").send_keys("框架里的用户名") # 跳出框架 (回到主页面) driver.switch_to.default_content() # 跳到最外层 # driver.switch_to.parent_frame() # 跳到上一级框架 (如果有多层嵌套)复制
2. 切换窗口
当点击一个链接,打开了新的浏览器窗口时,你需要切换过去才能操作。
python复制代码 收起
# 获取当前窗口的句柄 (唯一标识) original_window = driver.current_window_handle # 打开新窗口 (比如点击一个链接) driver.find_element(By.LINK_TEXT, "打开新窗口").click() time.sleep(2) # 等待新窗口出现 # 获取所有窗口的句柄 (是个列表) all_handles = driver.window_handles # 切换到新打开的窗口 (通常是列表的最后一个) for handle in all_handles: if handle != original_window: driver.switch_to.window(handle) break # 找到新窗口就跳出循环 # 在新窗口进行操作 driver.find_element(By.ID, "element_in_new_window").click() # 切回原窗口 driver.switch_to.window(original_window)复制
3. 鼠标悬停 (Hover)
有时候,鼠标悬停在某个元素上,才会弹出菜单或显示更多信息。
python复制代码 收起
from selenium.webdriver.common.action_chains import ActionChains # 找到需要悬停的元素 element_to_hover_over = driver.find_element(By.LINK_TEXT, "设置") # 创建 ActionChains 对象 actions = ActionChains(driver) # 执行鼠标悬停操作,并提交 actions.move_to_element(element_to_hover_over).perform() time.sleep(2) # 等待菜单出现复制
4. 弹框处理 (Alert, Confirm, Prompt)
网页中经常会出现各种弹窗,需要处理。
python复制代码 收起
# 切换到弹窗 alert = driver.switch_to.alert # 获取弹窗的文本 alert_text = alert.text print(f"弹窗内容: {alert_text}") # 点击确认按钮 alert.accept() # alert.dismiss() # 点击取消按钮 (如果存在) # alert.send_keys("输入内容") # 在 prompt 弹窗中输入复制
5. 下拉菜单
处理 <select> 标签的下拉菜单,有两种常见方式:
方式二:使用 Select 类 (更推荐)python复制代码 收起
from selenium.webdriver.support.ui import Select dropdown_element = driver.find_element(By.ID, "province_select") select = Select(dropdown_element) # 三种选择方式: select.select_by_index(0) # 按选项的索引选择 select.select_by_value("beijing") # 按选项的 value 属性值选择 select.select_by_visible_text("上海") # 按选项的可见文本选择复制
方式一:直接定位选项并点击python复制代码 收起
# 定位下拉框本身 dropdown = driver.find_element(By.ID, "province_select") # 在下拉框内部,根据 value 或文本定位选项并点击 dropdown.find_element(By.XPATH, "//option[@value='10']").click()复制
6. 执行 JS
有些操作,比如滚动页面、修改页面元素属性,仅靠 Selenium API 难以完成,这时就可以借助 JavaScript!
python复制代码 收起
# 1. 滚动到页面底部 js_scroll_bottom = "window.scrollTo(0, document.body.scrollHeight);" driver.execute_script(js_scroll_bottom) time.sleep(2) # 2. 滚动到指定元素的位置 # 先找到元素 target_element = driver.find_element(By.ID, "footer") js_scroll_to_element = f"arguments[0].scrollIntoView();" # arguments[0] 就是传进来的元素 driver.execute_script(js_scroll_to_element, target_element) time.sleep(2) # 3. 修改/删除元素属性 (例如,移除 input 的 readonly 属性) js_remove_readonly = 'var element = document.getElementById("my_input"); element.removeAttribute("readonly");' driver.execute_script(js_remove_readonly) driver.find_element(By.ID, "my_input").send_keys("我可以输入了!") # 4. 通过 JS 设置元素的值 js_set_value = 'var element = document.getElementById("my_input"); element.value = "2023-10-26";' driver.execute_script(js_set_value)复制
📁 第十一站:上传文件——“文件君”的穿越之旅
文件上传是 Web 测试中的一个常见难题。Selenium 提供了两种方案:
方案一:使用 send_keys() (最简单,但有局限)
如果上传按钮是 <input type="file"> 这样的原生 HTML 元素,直接使用 send_keys() 传递文件的绝对路径即可。
python复制代码 收起
# 启动浏览器并打开有文件上传功能的页面 driver = webdriver.Chrome() driver.get("http://example.com/upload_page") # 替换成实际的上传页面 # 定位到文件上传按钮 upload_button = driver.find_element(By.ID, "file-upload-button") # 替换成实际 ID # 文件的绝对路径 (确保路径正确!) file_path = "/Users/your_username/Documents/test_file.txt" # 替换成你的文件路径 # 将文件路径发送给上传按钮 upload_button.send_keys(file_path) # 可能还需要点击上传确认按钮 driver.find_element(By.ID, "upload-confirm-button").click()复制
局限: 这种方法不适用于由操作系统弹出文件选择对话框的情况。
方案二:使用 AutoIt 工具 (万能解决方案,但稍复杂)
当 send_keys() 无效时,就需要借助 AutoIt 这样的第三方工具来模拟用户与操作系统弹窗的交互。
步骤概览:
- 安装 AutoIt: 从 AutoIt 官网下载安装。安装包里包含了
AutoIt Window Info工具。 - 编写 AutoIt 脚本 (
.au3文件):- 用 AutoIt 编写脚本,模拟按下
Ctrl+V粘贴文件路径,然后模拟按下Enter键(或使用ControlClick精确点击“打开”按钮)。 - 使用 AutoIt 的编译器将脚本编译成
.exe文件。
- 用 AutoIt 编写脚本,模拟按下
- 在 Selenium 脚本中调用 AutoIt:
- 先在 Selenium 中点击上传按钮,触发文件选择对话框。
- 等待对话框出现后,使用
os.system()或subprocess调用你编译好的 AutoIt.exe文件。
AutoIt Window Info 工具的妙用:
当你写 AutoIt 脚本时,需要知道目标窗口的标题、类名、控件 ID。AutoIt Window Info 工具就能帮你“侦测”到这些信息!
- 运行
AutoIt Window Info。 - 点击工具栏上的“十字准星”,然后将鼠标移到你想要识别的对话框(如文件选择框)上,点击它。
- 工具会显示窗口的标题 (Title)、类名 (Class)。
- 切换到“Control”标签页,将鼠标移到对话框里的按钮(如“打开”)上,就能看到该按钮的类名 (ClassNN) 和 控件 ID (Control ID)。
AutoIt 脚本示例 (uploadFile.au3):
autoit复制代码 收起
; 定义文件路径变量 Local $sFilePath = "C:\path\to\your\file.txt" ; 替换成你的文件绝对路径 ; 模拟按下 Ctrl+V 粘贴文件路径 Send("^v") Sleep(1000) ; 等待一下 ; 模拟点击“打开”按钮 (通常是 Enter 键) Send("{ENTER}") ; 如果 Enter 键不行,需要用 ControlClick 精确点击 ; ControlClick("窗口标题", "", "控件的 ClassNN") ; 例如: ControlClick("打开", "", "[CLASSNN:Button1]")复制
Selenium 调用 AutoIt 脚本示例:
python复制代码 收起
import os import time from selenium import webdriver from selenium.webdriver.common.by import By driver = webdriver.Chrome() driver.get("http://example.com/upload_page") upload_button = driver.find_element(By.ID, "file-upload-button") upload_button.click() # 触发文件选择对话框 time.sleep(2) # 等待对话框出现 # 调用 AutoIt 编译好的 .exe 文件 (替换成你的路径) os.system(r"C:\path\to\your\uploadFile.exe") # ... 继续其他操作 ... driver.quit()复制
注意事项:
- AutoIt 脚本的精确性很重要,窗口标题、控件 ID 都要准确。
ControlClick是更精确的选择,但需要先用AutoIt Window Info获取信息。- AutoIt 主要是 Windows 平台解决方案,跨平台性不如
send_keys。
🎉 结语:成为 Web 测试的“超人”!
恭喜你! 🎉 读完这篇“修炼秘籍”,你已经掌握了 Selenium 的核心技能,从基础操作到复杂的页面交互,再到文件上传,你已经可以自信地告别“手工点点点”的时代了!
记住,学习自动化测试的关键在于:
- 勤动手: 理论再好,不如实操!多写代码,多尝试。
- 勤查阅: 遇到问题,别怕查文档!
- 善利用: 利用开发者工具、在线正则测试网站(如 Regex101.com)来辅助你。
掌握了 Selenium,你将拥有无限的可能,无论是提高工作效率,还是深入理解 Web 应用的底层逻辑,都会让你在技术道路上更进一步!
还有什么关于 Selenium 的疑问?或者你有什么独门秘籍?欢迎在评论区留言分享!让我们一起在自动化测试的道路上越走越远! 👇
希望这篇博客文章能让你觉得有趣并且易于理解! 😊