当前位置: 首页 > news >正文

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"),可获取元素的指定属性值,如valuehrefclass等,还可从网页中提取链接地址、图片URL、文本内容等信息。
  • 复选框/单选框操作:使用is_selected()click()方法,如if not checkbox.is_selected(): checkbox.click()
  • 下拉列表操作:使用Select类的select_by_indexselect_by_valueselect_by_visible_text方法选择下拉列表的选项,如dropdown.select_by_visible_text("China")

高级操作

  • 鼠标操作:使用ActionChains类的clickdouble_clickcontext_clickdrag_and_dropmove_to_elementclick_and_holdrelease等方法执行复杂的鼠标操作。
  • 键盘操作:使用Keys类的send_keys(Keys.KEY_NAME)模拟键盘操作,如element.send_keys(Keys.ENTER)。对于更复杂的键盘操作,可使用ActionChains类和key_downkey_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操作

  • 添加Cookiedriver.add_cookie(cookie_dict)
  • 获取Cookiedriver.get_cookie(name)driver.get_cookies()
  • 删除Cookiedriver.delete_cookie(name)driver.delete_all_cookies()

JavaScript执行

  • 执行JavaScriptdriver.execute_script(script)
  • 获取JavaScript返回值driver.execute_script("return ...")

iframe切换

  • 切换到iframedriver.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()

相关文章:

  • cc攻击是什么?云上业务如何防护cc攻击
  • 【FlashRAG】本地部署与demo运行(二)
  • If possible, you should set the Secure flag for these cookies 修复方案
  • leetcode1201. 丑数 III -medium
  • weibo_comment_pc_tool: 微博评论采集软件工具,根据wb帖子链接爬评论
  • 调用Gensim库训练Word2Vec模型
  • Predixy的docker化
  • Linux的调试器--gbd/cgbd
  • 数据清理的例子
  • 【计算机网络】传输层TCP协议——协议段格式、三次握手四次挥手、超时重传、滑动窗口、流量控制、
  • 【Golang进阶】第八章:并发编程基础——从Goroutine调度到Channel通信实战
  • CentOS 7 环境下部署 LAMP
  • Go语言通道如何实现通信
  • 计算机网络 HTTP篇常见面试题总结
  • Vert.x学习笔记-EventLoop工作原理
  • 使用ssh-audit扫描ssh过期加密算法配置
  • day14 leetcode-hot100-27(链表6)
  • Telerik生态整合:Kendo UI for Angular组件在WinForms应用中的深度嵌入(一)
  • Edmonds-Karp详解-基于BFS的最短增广路径
  • 【仿生机器人】仿生机器人认知-情感系统架构设计报告
  • 万网网站建设方案书/济宁网站建设
  • 网站建设开发报价方案模板下载/陕西seo公司
  • 深圳网站优讳化/百度推广注册
  • 网站建设哪个好/百度搜索怎么优化
  • 如何做网站访问日志/关键词优化是什么意思
  • 湖州网站开发区火炬手/网络营销工具与方法