图书网站开发的实践意义,购物商城开发,企业网站布局,wordpress数字交易模板文章目录 1. 概述2. 安装Chrome及ChromeDriver2.1 安装Chrome2.2 安装ChromeDriver 3. 安装Selenium4. 常见用法4.1 启动4.2 查找元素4.3 等待页面加载元素 1. 概述
Selenium 是一个用于自动化 web 浏览器的工具#xff0c;它提供了一套用于测试 web 应用程序的工具和库。Sel… 文章目录 1. 概述2. 安装Chrome及ChromeDriver2.1 安装Chrome2.2 安装ChromeDriver 3. 安装Selenium4. 常见用法4.1 启动4.2 查找元素4.3 等待页面加载元素 1. 概述
Selenium 是一个用于自动化 web 浏览器的工具它提供了一套用于测试 web 应用程序的工具和库。Selenium 最初是用于测试 web 应用程序的但它也被广泛用于进行网络数据采集、自动化任务和网页操作等。
Selenium 支持多种编程语言包括 Python、Java、JavaScript、C# 等但最为常用的是使用 Python 进行 Selenium 测试和自动化。使用 Selenium您可以编写代码来模拟用户在 web 浏览器中的操作例如打开网页、填写表单、点击按钮、提取网页内容等。
Selenium 提供了多个工具和库其中最常用的是 Selenium WebDriver它允许您控制各种不同的 web 浏览器如 Chrome、Firefox、Edge 等。通过 Selenium WebDriver您可以编写代码来与浏览器进行交互模拟用户在浏览器中的行为并对 web 应用程序进行测试、数据采集和自动化任务。
2. 安装Chrome及ChromeDriver
2.1 安装Chrome
1linux 安装 Chrome 方法
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb# 如果这一步报错直接执行下一步
sudo dpkg -i ./google-chrome*.debsudo apt-get install -f判断是否安装成功
google-chrome --version2Windows 和 Mac安装Chrome 浏览器即可
2.2 安装ChromeDriver
ChromeDriver 的下载方式参考这里注意 ChromeDriver 和 Chrome 内核的版本匹配即可。
3. 安装Selenium
pip install selenium4. 常见用法
4.1 启动
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import ServiceWEB_DRIVER_PATH /xxx/xx/chromedriver
chrome_options Options()
driver webdriver.Chrome(serviceService(WEB_DRIVER_PATH), optionschrome_options)以下是启动一些常见应用场景的 ChromeOptions 配置示例
from selenium import webdriver
from selenium.webdriver.chrome.options import Options# 创建ChromeOptions实例
chrome_options Options()# 1. 隐身模式启动
chrome_options.add_argument(--incognito)# 2. 大窗口启动
chrome_options.add_argument(--start-maximized)# 3. 禁用GPU渲染
chrome_options.add_argument(--disable-gpu)# 4. 添加浏览器启动参数例如禁用安全警告
chrome_options.add_argument(--unsafely-treat-insecure-origin-as-securehttp://example.com)
chrome_options.add_argument(--ignore-certificate-errors)# 5. 添加扩展程序
# 注意extension_path应指向本地的.crx扩展程序文件
extension_path /path/to/your/extension.crx
chrome_options.add_extension(extension_path)# 6. 更改下载目录
prefs {download.default_directory: /path/to/download/folder,download.prompt_for_download: False,plugins.always_open_pdf_externally: True # 例如总是外部打开PDF文件
}
chrome_options.add_experimental_option(prefs, prefs)# 7. 启动无头模式无界面运行
chrome_options.add_argument(--headless)# 创建Chrome浏览器实例使用上述配置
driver webdriver.Chrome(optionschrome_options)# 执行网页导航或者其他操作...
driver.get(http://example.com)# 使用完毕后关闭浏览器
driver.quit()4.2 查找元素
1用 id 查找
from selenium.webdriver.common.by import By
try:ele driver.find_element(By.ID, id name)
except Exception as e:pass2用 class 查找
from selenium.webdriver.common.by import By
try:# 查找第一个class名字匹配的元素ele driver.find_element(By.CLASS_NAME, class name) # 替换 class_name 为实际Class名# 查找所有class名字匹配的元素eles driver.find_elements(By.CLASS_NAME, class name)
except Exception as e:pass3用 css 查找
from selenium.webdriver.common.by import By
try:# 通过CSS选择器定位单个元素element driver.find_element(By.CSS_SELECTOR, #element_id or .class_name or tag_name[attrvalue]...) # 使用实际的CSS选择器# 通过CSS选择器定位一组元素elements driver.find_elements(By.CSS_SELECTOR, your_css_selector)
except Exception as e:pass4查找其他元素
from selenium.webdriver.common.by import By
try:# 查找所有div标签ele driver.find_elements(By.TAG_NAME, div)# 查找第一个a标签ele driver.find_element(By.TAG_NAME, a)# 查找第一个span标签ele driver.find_element(By.TAG_NAME, span)
except Exception as e:pass4.3 等待页面加载元素
有时页面加载需要等待一定时间如果显式的 sleep不够灵活可以借助selenium 的 WebDriverWait。
WebDriverWait 是 Selenium WebDriver 中用于实现隐式等待和显式等待的一种机制它能够根据提供的条件等待元素变为可用或满足特定条件。显式等待允许你在执行下一步操作之前强制等待某个条件成立这样可以避免因为页面元素加载不完全而导致的找不到元素或操作元素失败的问题。
使用 WebDriverWait 的基本步骤如下
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# 初始化WebDriver对象这里以Chrome为例
driver webdriver.Chrome()# 访问某个URL
driver.get(http://www.example.com)# 创建WebDriverWait对象通常需要传入WebDriver实例和超时时长
wait WebDriverWait(driver, 10) # 这里的10表示最长等待10秒# 使用WebDriverWait等待某个条件满足
# 例如等待页面上某个id为element_id的元素可见
element wait.until(EC.presence_of_element_located((By.ID, element_id)))# 此时element变量已经被赋值为找到的元素可以对其进行后续操作
element.click()# 或者等待页面标题包含特定文字
wait.until(EC.title_contains(Example))# 最后关闭浏览器
driver.quit()expected_conditions模块提供了多种内置条件
presence_of_element_located((By.ID, element_id))等待元素存在visibility_of_element_located((By.ID, element_id))等待元素可见element_to_be_clickable((By.ID, element_id))等待元素可见且可点击title_is(Page Title)等待页面标题为特定值title_contains(Partial Title)等待页面标题包含特定部分…
通过这种方式WebDriverWait 可以帮助我们在执行自动化脚本时更加稳定可靠确保在进行操作之前目标元素已经准备好。