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()