Selenium 提供了丰富的操作动作,用于模拟用户在浏览器中的各种交互行为。以下为你详细介绍常见操作动作及其语法,并结合百度网站为例给出 Python 代码示例。
1. 打开网页
- 语法 :使用
driver.get(url)
方法,其中driver
是浏览器驱动实例,url
是要打开的网页地址。 - 示例代码:
python
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
2. 元素输入操作
- 语法 :使用
element.send_keys(text)
方法,element
是定位到的元素,text
是要输入的文本内容。 - 示例代码:在百度搜索框输入关键词"Python"。
python
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
search_box = driver.find_element(By.ID, 'kw')
search_box.send_keys('Python')
3. 元素点击操作
- 语法 :使用
element.click()
方法,element
是定位到的可点击元素,如按钮、链接等。 - 示例代码:点击百度搜索按钮。
python
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
search_box = driver.find_element(By.ID, 'kw')
search_box.send_keys('Python')
search_button = driver.find_element(By.ID, 'su')
search_button.click()
4. 清除输入框内容
- 语法 :使用
element.clear()
方法,element
是定位到的输入框元素。 - 示例代码:清除百度搜索框中的内容。
python
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
search_box = driver.find_element(By.ID, 'kw')
search_box.send_keys('Python')
search_box.clear()
5. 获取元素文本内容
- 语法 :使用
element.text
属性,element
是定位到的元素。 - 示例代码:获取百度搜索结果的第一个标题文本。
python
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/s?wd=Python')
first_result_title = driver.find_element(By.XPATH, '//div[@class="result c-container"]/h3/a')
title_text = first_result_title.text
print(title_text)
6. 获取元素属性值
- 语法 :使用
element.get_attribute(attribute_name)
方法,element
是定位到的元素,attribute_name
是要获取的属性名。 - 示例代码 :获取百度搜索框的
placeholder
属性值。
python
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
search_box = driver.find_element(By.ID, 'kw')
placeholder_value = search_box.get_attribute('placeholder')
print(placeholder_value)
7. 页面滚动操作
- 语法 :使用
driver.execute_script(script)
方法执行 JavaScript 代码来实现页面滚动,script
是 JavaScript 脚本。- 滚动到页面底部:
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
- 滚动到指定位置:
driver.execute_script("window.scrollTo(0, 500);")
(滚动到垂直位置 500 像素处)
- 滚动到页面底部:
- 示例代码:将百度搜索结果页面滚动到页面底部。
python
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get('https://www.baidu.com/s?wd=Python')
driver.execute_script("window.scrollTo(0, document.body.scrollHeight);")
8. 切换窗口
- 语法 :
- 获取当前所有窗口句柄:
handles = driver.window_handles
- 切换到指定窗口:
driver.switch_to.window(handle)
,handle
是窗口句柄。
- 获取当前所有窗口句柄:
- 示例代码:假设点击百度页面上的某个链接打开了新窗口,然后切换到新窗口。
python
from selenium import webdriver
from selenium.webdriver.common.by import By
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
# 假设点击某个链接打开新窗口
link = driver.find_element(By.LINK_TEXT, '某个链接')
link.click()
# 获取所有窗口句柄
handles = driver.window_handles
# 切换到新窗口
driver.switch_to.window(handles[-1])
9. 处理弹窗
- 语法 :
- 切换到弹窗:
alert = driver.switch_to.alert
- 接受弹窗(点击确定):
alert.accept()
- 取消弹窗(点击取消):
alert.dismiss()
- 获取弹窗文本:
alert_text = alert.text
- 切换到弹窗:
- 示例代码:在实际百度页面中较少遇到弹窗,以下为示例代码结构。
python
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://example.com') # 假设该页面有弹窗
try:
alert = driver.switch_to.alert
alert_text = alert.text
print(alert_text)
alert.accept()
except Exception as e:
print(f"未找到弹窗: {e}")
10. 关闭浏览器
- 语法 :
- 关闭当前窗口:
driver.close()
- 关闭所有窗口并退出浏览器:
driver.quit()
- 关闭当前窗口:
- 示例代码:
python
from selenium import webdriver
driver = webdriver.Chrome()
driver.get('https://www.baidu.com')
# 执行一系列操作
driver.quit()
这些操作动作可以帮助你完成各种网页自动化任务,根据具体需求灵活组合使用。同时,要注意元素定位的准确性,确保操作能够正确执行。