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

示例代码

python 复制代码
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()
相关推荐
ClouGence6 小时前
不搭 Selenium 或 Playwright,怎么测试公司的内网业务?
selenium·测试
螺丝钉tina5 天前
[Playwright] [02]常用命令与调试:Debug UI、Mode和 Trace Viewer
开发语言·javascript·测试工具·ui·自动化
梧桐1686 天前
14天、31个缺陷、28个测试脚本—用 Claude Code 完成第三方软件测试
人工智能·测试工具
mewowaBc6 天前
postman使用细则
测试工具·postman·偏差
光影6277 天前
Unittest单元测试基础速记
测试工具·单元测试·json·测试覆盖率
xie881018027 天前
正则里的点号不匹配换行:多行模式的开关
运维·服务器·测试工具
2601_967987378 天前
Python在自动化测试中有哪些应用?
python自动化测试·selenium·appium·pytest·性能测试
东舟技术8 天前
从人工目检到AI视觉:智能座舱瞬态故障的自动化捕获与溯源
功能测试·测试工具·自动化
小猿A9 天前
【2026最新】Apifox下载、配置、实战教程(附官网安装包)
测试工具
泽众云测试10 天前
泽众软件与广州华南检验检测中心签约,PerformanceRunner性能测试工具助力第三方测评机构性能检测能力升级
软件测试·测试工具·性能测试