Selenium入门教程
一、简介
Selenium 是一个用于自动化 Web 浏览器操作的工具,主要用于 Web 应用程序的测试,也可用于 Web 数据爬取等场景。它支持多种编程语言,如 Python、Java、C# 等,并且能在多种浏览器上运行,包括 Chrome、Firefox、Safari、Edge 等。
二、环境搭建
1、安装 Selenium 库
如果使用 Python,在终端或命令提示符中输入pip install selenium来安装。
2、下载浏览器驱动
Selenium 需要与特定浏览器的 WebDriver 一起使用。以 Chrome 浏览器为例,可从ChromeDriver 官方网站下载对应版本的驱动程序。下载完成后,将其解压,并把所在路径添加到系统环境变量中,或者在代码中指定其位置。
三、基本操作
1、导入库和初始化 WebDriver
python 运行from selenium import webdriverfrom selenium.webdriver.edge.service import Servicefrom selenium.webdriver.edge.options import Options\# 设置Edge浏览器选项edge\_options = Options()edge\_options.add\_argument("--headless") # 无头模式,不显示浏览器窗口edge\_options.add\_argument("--disable-gpu")edge\_options.add\_argument("--window-size=1920,1080")\# 指定Edge驱动路径(需要先下载对应版本的Edge驱动)edge\_service = Service('D:\\桌面文件\\edgedriver\_win64\\msedgedriver.exe') # 替换为你的Edge驱动路径\# 启动Edge浏览器driver = webdriver.Edge(service=edge\_service, options=edge\_options)
2、打开网页
python 运行url = "https://www.example.com"driver.get(url)
3、定位元素
python 运行\# 通过ID定位元素element = driver.find\_element(By.ID, "element\_id")\# 通过名称定位元素element = driver.find\_element(By.NAME, "element\_name")\# 通过类名定位元素element = driver.find\_element(By.CLASS\_NAME, "element\_class")\# 通过CSS选择器定位元素element = driver.find\_element(By.CSS\_SELECTOR, "css\_selector")\# 通过XPath定位元素element = driver.find\_element(By.XPATH, "xpath\_expression")
4、操作元素
python 运行\# 输入文本input\_element = driver.find\_element(By.ID, "input\_id")input\_element.send\_keys("Hello, World!")\# 点击按钮button\_element = driver.find\_element(By.ID, "button\_id")button\_element.click()
5、获取页面信息
python 运行\# 获取网页标题title = driver.title\# 获取页面源代码source\_code = driver.page\_source
6、关闭浏览器
python 运行driver.quit()
四、等待机制
1、隐式等待
设置一个全局的等待时间,在查找元素时,如果元素没有立即出现,会在指定的时间内不断尝试查找,直到元素出现或超过等待时间。
python 运行driver.implicitly\_wait(10) # 等待10秒
2、显式等待
指定要等待的条件,在指定的时间内不断检查条件是否满足,直到条件满足或超过等待时间。
python 运行from selenium.webdriver.support import expected\_conditions as ECfrom selenium.webdriver.support.ui import WebDriverWait\# 等待元素出现element = WebDriverWait(driver, 10).until(EC.presence\_of\_element\_located((By.ID, "element\_id")))
五、实战案例
以自动化登录网站为例:
python 运行from selenium import webdriver\# 设置浏览器驱动路径driver = webdriver.Chrome(executable\_path='/path/to/chromedriver')\# 打开登录页面driver.get('https://www.example.com/login')\# 等待页面加载完成time.sleep(2)\# 定位用户名和密码输入框username\_input = driver.find\_element\_by\_id('username')password\_input = driver.find\_element\_by\_id('password')\# 输入用户名和密码username\_input.send\_keys('your\_username')password\_input.send\_keys('your\_password')\# 模拟点击登录按钮login\_button = driver.find\_element\_by\_id('login\_button')login\_button.click()\# 等待一段时间,确保登录成功time.sleep(3)\# 关闭浏览器driver.quit()