当前位置: 首页 > news >正文

Selenium基本使用指南

文章目录

  • Selenium自动化测试入门:从零开始玩转Web自动化
    • 一、什么是Selenium?
    • 二、 环境搭建
      • 1. 安装Python
      • 2. 安装Selenium
      • 3. 下载浏览器驱动
      • 4. 编写Selenium程序
    • 三、元素定位大法
      • 1. 通过ID定位
      • 2. 通过类名定位
      • 3. 通过标签名定位
      • 4. 通过CSS选择器定位
      • 5. 通过XPath定位
    • 四、常用操作
      • 1. 点击操作
      • 2. 输入操作
      • 3. 获取元素信息
      • 4. 等待机制
        • 4.1 强制等待(不推荐)
        • 4.2 显式等待(推荐)
        • 4.3 隐式等待
        • 4.4 自动登录
    • 五、常见问题解决
      • 1. 元素找不到
      • 2. 页面加载太慢
      • 3. 元素不可点击
    • 六、高级技巧
      • 1. 处理弹窗
      • 2. 切换窗口
      • 3. 滚动页面
    • 七、总结

Selenium自动化测试入门:从零开始玩转Web自动化

💡💡💡大家好!今天来聊聊Selenium这个神器,相信很多做测试或者爬虫的朋友都不陌生。不过对于刚入门的小伙伴来说,Selenium可能还有点神秘。别担心,今天我就用最接地气的方式,带大家从零开始玩转Selenium!

一、什么是Selenium?


Selenium说白了就是一个自动化测试工具,可以模拟人在浏览器上的操作。比如:

  • 自动打开网页
  • 自动点击按钮
  • 自动填写表单
  • 自动获取页面数据

想象一下,你每天都要重复登录某个网站、填写相同的信息,是不是很烦?用Selenium写个脚本,一键搞定!

二、 环境搭建

1. 安装Python

# 检查Python版本
python --version

2. 安装Selenium

pip install selenium

3. 下载浏览器驱动

这里以Chrome为例:

  1. 查看你的Chrome版本:chrome://version/
  2. 去 ChromeDriver官网 下载对应版本的驱动
  3. 把下载的chromedriver.exe放到Python安装目录的Scripts文件夹下

💡 小贴士:现在也可以用webdriver-manager自动管理驱动,不用手动下载了!

pip install webdriver-manager

4. 编写Selenium程序

让我们写一个最简单的程序,打开百度搜索:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
import time# 创建浏览器实例
driver = webdriver.Chrome()try:# 打开百度driver.get("https://www.baidu.com")print("成功打开百度!")# 找到搜索框search_box = driver.find_element(By.ID, "kw")# 输入搜索内容search_box.send_keys("Selenium自动化测试")# 按回车搜索search_box.send_keys(Keys.RETURN)# 等待一下,让页面加载time.sleep(3)print("搜索完成!")finally:# 关闭浏览器driver.quit()

运行这个程序,你会看到Chrome浏览器自动打开,然后自动搜索"Selenium自动化测试"!

三、元素定位大法

Selenium的核心就是找到页面上的元素,然后操作它们。有几种常用的定位方式:

1. 通过ID定位

element = driver.find_element(By.ID, "username")

2. 通过类名定位

element = driver.find_element(By.CLASS_NAME, "login-btn")

3. 通过标签名定位

element = driver.find_element(By.TAG_NAME, "input")

4. 通过CSS选择器定位

element = driver.find_element(By.CSS_SELECTOR, "#login-form .username")

5. 通过XPath定位

element = driver.find_element(By.XPATH, "//input[@name='username']")

💡 选择建议:优先使用ID,然后是CSS选择器,最后才考虑XPath。XPath虽然强大,但性能相对较差。

四、常用操作

1. 点击操作

# 点击按钮
button = driver.find_element(By.ID, "submit-btn")
button.click()# 点击链接
link = driver.find_element(By.LINK_TEXT, "登录")
link.click()

2. 输入操作

# 清空输入框
input_field = driver.find_element(By.ID, "username")
input_field.clear()# 输入文本
input_field.send_keys("我的用户名")# 输入特殊键
input_field.send_keys(Keys.TAB)  # 按Tab键
input_field.send_keys(Keys.ENTER)  # 按回车键

3. 获取元素信息

# 获取文本内容
text = element.text
print(f"元素文本:{text}")# 获取属性值
value = element.get_attribute("value")
print(f"输入框的值:{value}")

4. 等待机制

页面加载需要时间,所以我们需要等待元素出现:

4.1 强制等待(不推荐)
import time
time.sleep(3)  # 等待3秒
4.2 显式等待(推荐)
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC# 等待元素出现
wait = WebDriverWait(driver, 10)
element = wait.until(EC.presence_of_element_located((By.ID, "username")))
4.3 隐式等待
driver.implicitly_wait(10)  # 全局等待10秒
4.4 自动登录

让我们写一个自动登录的完整例子:

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
from selenium.webdriver.common.keys import Keys
import timedef auto_login():driver = webdriver.Chrome()try:# 打开页面driver.get("https://example.com/login")# 等待加载wait = WebDriverWait(driver, 10)# 输入用户名username = wait.until(EC.presence_of_element_located((By.ID, "username")))username.clear()username.send_keys("你的用户名")# 输入密码password = driver.find_element(By.ID, "password")password.clear()password.send_keys("你的密码")# 点击登录按钮login_btn = driver.find_element(By.ID, "login-btn")login_btn.click()# 等待登录成功wait.until(EC.presence_of_element_located((By.CLASS_NAME, "dashboard")))print("登录成功!")except Exception as e:print(f"登录失败:{e}")finally:driver.quit()auto_login()

五、常见问题解决

1. 元素找不到

# 检查元素是否存在
try:element = driver.find_element(By.ID, "some-id")
except NoSuchElementException:print("元素不存在!")

2. 页面加载太慢

# 设置页面加载超时
driver.set_page_load_timeout(30)

3. 元素不可点击

# 等待元素可点击
wait.until(EC.element_to_be_clickable((By.ID, "button")))

六、高级技巧

1. 处理弹窗

alert = driver.switch_to.alert
alert.accept()  # 点击确定
# alert.dismiss()  # 点击取消

2. 切换窗口

# 获取所有窗口句柄
windows = driver.window_handles# 切换到新窗口
driver.switch_to.window(windows[1])

3. 滚动页面

# 滚动到页面底部
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")# 滚动到指定元素
element = driver.find_element(By.ID, "target")
driver.execute_script("arguments[0].scrollIntoView();", element)

七、总结

Selenium真的很强大,可以做的事情很多:

  • 自动化测试
  • 数据爬取
  • 重复性任务自动化
  • 网站监控

希望这篇文章对你有帮助!如果有什么问题,欢迎在评论区讨论。


文章转载自:

http://N5Xl6mm1.whcLz.cn
http://vUX1K8PN.whcLz.cn
http://ci8hESGB.whcLz.cn
http://8zuBNvhP.whcLz.cn
http://Xllvmsnd.whcLz.cn
http://KK1Sqe8q.whcLz.cn
http://xkdezsoQ.whcLz.cn
http://BMIA6aj3.whcLz.cn
http://g70g5nJb.whcLz.cn
http://li24pzmX.whcLz.cn
http://5WUSCkWY.whcLz.cn
http://flSS0bvr.whcLz.cn
http://LndUxHFA.whcLz.cn
http://XWYWdGmd.whcLz.cn
http://NvJpq2rX.whcLz.cn
http://Zp8Y0GQF.whcLz.cn
http://0EuhHXJf.whcLz.cn
http://O1JZDO6G.whcLz.cn
http://W5feC07B.whcLz.cn
http://F36TWgHl.whcLz.cn
http://z0zEvZwX.whcLz.cn
http://85lQj2n0.whcLz.cn
http://Hk9aPA8p.whcLz.cn
http://xlDx2Ei6.whcLz.cn
http://y0c4HaL8.whcLz.cn
http://wXlN1fKD.whcLz.cn
http://AaawFM1X.whcLz.cn
http://uBFoxVIT.whcLz.cn
http://Sb9C7bJk.whcLz.cn
http://jafsB85o.whcLz.cn
http://www.dtcms.com/a/371646.html

相关文章:

  • Java核心概念精讲:JVM内存模型、Java类加载全过程与 JVM垃圾回收算法等(51-55)
  • 如何在Python中使用正则表达式?
  • Git Bash 中 Git 命令的实用主义指南
  • Vue → React/Next.js 思维对照表
  • 【Android】内外部存储的读写
  • [Android]RecycleView的item用法
  • 构建高可用二级缓存系统
  • hardhat3 框架源码修改后如何使用
  • Photoshop - Photoshop 创建文档
  • 论文阅读:SaTML 2023 A Light Recipe to Train Robust Vision Transformers
  • RocketMQ为什么自研Nameserver而不用zookeeper?
  • 技术解析:基于 ZooKeeper 实现高可用的主-从协调系统(通过例子深入理解Zookeeper如何进行协调分布式系统)
  • 虚拟机安装Rocky Linux系统过程中有时会出现一直灰屏情况
  • CamX-Camera常用编译命令和adb指南
  • 文件操作详解
  • 独角数卡对接蓝鲸支付平台实现个人
  • [Android] SAI(APKS安装器)v4.5
  • MySQL 主从读写分离架构
  • 软件可靠性基本概念
  • 无人机自组网系统的抗干扰技术分析
  • 对比Java学习Go——基础理论篇
  • centos9安装sentinel
  • 小迪安全v2023学习笔记(七十九讲)—— 中间件安全IISApacheTomcatNginxCVE
  • 关键字 const
  • 性能优化——首屏优化
  • Linux网络设备驱动程序深度理解
  • Unity AssetBundle详解
  • 小白AIGC短视频生成的第一课之混元AI视频
  • 通义万相wan2.2视频模型的基础模型与安装应用详解
  • JavaEE 进阶第三期:开启前端入门之旅(三)