使用Selenium可以模拟浏览器行为实现自动化测试、数据爬取等功能。下面是使用Selenium的完整攻略:
安装Selenium
首先需要安装Selenium,可以使用pip进行安装:
pip install selenium
安装浏览器驱动
Selenium需要使用浏览器驱动进行控制,需要事先安装浏览器驱动。常见的浏览器驱动有Chrome Driver、Firefox Driver等。你需要根据浏览器类型和版本进行安装。以下是Chrome Driver的安装流程:
- 下载对应的Chrome Driver版本,下载地址:http://npm.taobao.org/mirrors/chromedriver/
- 将下载好的chromedriver.exe文件放置到系统环境变量的路径中,例如将文件放在C:\Program Files (x86)\Google\Chrome\Application目录中
初始化浏览器对象
Selenium可以对多种浏览器进行控制,以下以Chrome浏览器为例:
from selenium import webdriver
browser = webdriver.Chrome()
以上代码初始化了一个Chrome浏览器对象,可以使用该对象进行控制。
模拟浏览器行为
使用浏览器对象控制浏览器,可以通过以下方法实现常见的浏览器行为:
打开网页
可以使用get
方法打开一个网页:
browser.get('http://www.baidu.com')
查找元素
可以使用find_element_by_*
系列方法查找页面元素:
# 通过id查找元素
element = browser.find_element_by_id('kw')
# 通过class name查找元素
element = browser.find_element_by_class_name('search-input')
# 通过CSS selector查找元素
element = browser.find_element_by_css_selector('#search-form > input')
输入内容
使用查找到的元素对象的send_keys
方法输入内容:
element.send_keys('Python')
点击按钮
使用查找到的元素对象的click
方法点击按钮:
element.click()
等待页面元素加载完成
可以使用WebDriverWait
类等待页面元素的加载:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.common.by import By
# 等待id为result的元素加载完成
element = WebDriverWait(browser, 10).until(
EC.presence_of_element_located((By.ID, 'result'))
)
获取页面源代码
可以使用page_source
属性获取页面源代码:
page_source = browser.page_source
示例
以下是一个使用Selenium模拟登录Github的例子:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
browser = webdriver.Chrome()
# 打开Github登录页面
browser.get('https://github.com/login')
# 输入用户名和密码
username = browser.find_element_by_id('login_field')
password = browser.find_element_by_id('password')
username.send_keys('your_username')
password.send_keys('your_password')
# 提交表单
password.send_keys(Keys.ENTER)
# 等待页面跳转
profile_link = browser.find_element_by_class_name('user-profile-link')
assert profile_link.text == 'your_username'
browser.quit()
以上代码打开了Github登录页面,输入了用户名和密码,然后提交表单进行登录,最后验证是否登录成功。