selenium基础 - 教程
整理后的就是以下Selenium操作介绍:
基本操作
- 定位元素
- 使用
By.ID定位:driver.find_element(By.ID,"page-mainIframe"),尽量使用id元素定位。 - 定位多个元素:
driver.find_elements(By.ID,"some_id")。
- 使用
- 刷新页面:使用
refresh()方法刷新当前页面。 - 等待机制
- 显式等待:使用
WebDriverWait类和expected_conditions模块,如element = WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.ID, "dynamic_id")))。 - 隐式等待:通过
implicitly_wait()方法设置,如driver.implicitly_wait(10)。 - 固定等待:使用
time.sleep()方法让脚本暂停执行指定时间。 - Fluent Wait:适用于需要动态调整等待时间的场景。
- 显式等待:使用
元素操作
- 输入文本:
element.send_keys("text")。 - 点击元素:
element.click()。 - 清除输入框内容:
element.clear()。 - 获取元素属性:
value = element.get_attribute("value"),可获取元素的指定属性值,如value、href、class等,还可从网页中提取链接地址、图片URL、文本内容等信息。 - 复选框/单选框操作:使用
is_selected()和click()方法,如if not checkbox.is_selected(): checkbox.click()。 - 下拉列表操作:使用
Select类的select_by_index、select_by_value、select_by_visible_text方法选择下拉列表的选项,如dropdown.select_by_visible_text("China")。
高级操作
- 鼠标操作:使用
ActionChains类的click、double_click、context_click、drag_and_drop、move_to_element、click_and_hold、release等方法执行复杂的鼠标操作。 - 键盘操作:使用
Keys类的send_keys(Keys.KEY_NAME)模拟键盘操作,如element.send_keys(Keys.ENTER)。对于更复杂的键盘操作,可使用ActionChains类和key_down、key_up方法。 - 文件上传:通过
<input type="file">元素的send_keys("file_path")方法上传文件,如element.send_keys("/path/to/file.txt")。
窗口操作
- 打开新窗口:
driver.execute_script("window.open('URL');")。 - 切换窗口:
driver.switch_to.window(window_handle)。 - 最大化窗口:
driver.maximize_window()。 - 设置窗口大小:
driver.set_window_size(width, height)。 - 全屏模式:
driver.fullscreen_window()。
网页操作
- 打开网页:
driver.get(url)。 - 刷新页面:
driver.refresh()。
弹窗处理
- Alert弹窗:使用
driver.switch_to.alert切换到Alert上下文,然后使用accept()方法接受弹窗或使用dismiss()方法关闭弹窗。 - Confirm弹窗:处理方式同Alert弹窗。
- Prompt弹窗:使用
driver.switch_to.alert切换到Prompt弹窗上下文,然后使用send_keys()输入文本,再使用accept()或dismiss()方法处理弹窗。
Cookie操作
- 添加Cookie:
driver.add_cookie(cookie_dict)。 - 获取Cookie:
driver.get_cookie(name)或driver.get_cookies()。 - 删除Cookie:
driver.delete_cookie(name)或driver.delete_all_cookies()。
JavaScript执行
- 执行JavaScript:
driver.execute_script(script)。 - 获取JavaScript返回值:
driver.execute_script("return ...")。
iframe切换
- 切换到iframe:
driver.switch_to.frame(iframe_element)。 - 切换回主页面:
driver.switch_to.default_content()。
示例代码
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
# 设置Chrome WebDriver
driver = webdriver.Chrome(service=Service(ChromeDriverManager(
).install(
)
)
)
# 打开网页
driver.get("https://example.com"
)
# 添加Cookie
cookie_dict = {
'name': 'test_cookie'
, 'value': 'test_value'
, 'domain': 'example.com'
}
driver.add_cookie(cookie_dict)
# 获取Cookie
cookie = driver.get_cookie('test_cookie'
)
print("Cookie:"
, cookie)
# 获取所有Cookies
cookies = driver.get_cookies(
)
print("All Cookies:"
, cookies)
# 删除指定的Cookie
driver.delete_cookie('test_cookie'
)
# 再次获取所有Cookies,确认'test_cookie'已被删除
cookies_after_deletion = driver.get_cookies(
)
print("Cookies after deletion:"
, cookies_after_deletion)
# 删除所有Cookies
driver.delete_all_cookies(
)
# 再次获取所有Cookies,确认所有Cookies已被删除
cookies_after_all_deletion = driver.get_cookies(
)
print("Cookies after all deletion:"
, cookies_after_all_deletion)
# 关闭浏览器
driver.quit(
)