惊艳的Selenium技巧:探索基础和动作链的奇妙世界

news/2025/1/19 15:38:26/

1.Selenium简介

selenium可以帮助我们便捷的获取网站中动态加载的数据,也可以便捷实现模拟登录;
selenium是基于浏览器自动化的一个模块,使用可以操作浏览器来帮我们实现一些自动化的操作!
Selenium 是一个广泛使用的自动化测试工具,用于测试 Web 应用程序的功能和兼容性。它提供了一组功能强大的工具和库,可以模拟用户在浏览器中的操作,并对应用程序进行自动化测试。

以下是 Selenium 的一些重要特点和组成部分:

  1. 多浏览器支持:Selenium 支持多种主流浏览器,包括 Chrome、Firefox、Safari、Edge 等。这意味着您可以使用相同的测试脚本在不同的浏览器中执行测试,以验证应用程序的兼容性和一致性。

  2. 多语言支持:Selenium 提供了多种编程语言的支持,包括 Java、Python、C#、JavaScript 等。这使得开发人员可以使用自己熟悉的语言编写测试脚本,并灵活地与其他工具和框架进行集成。

  3. 元素定位:Selenium 提供了丰富的元素定位方法,可以通过 ID、类名、标签名、XPath、CSS 选择器等方式定位页面上的元素。这使得测试人员可以准确地操作和验证页面上的各个元素。

  4. 页面交互和操作:Selenium 可以模拟用户在浏览器中的各种操作,如点击、输入、选择、提交表单等。这使得测试人员可以编写测试脚本来模拟用户在应用程序中的交互,以验证应用程序的功能和用户体验。

  5. 并发测试:Selenium 支持并发测试,可以同时运行多个测试用例或测试套件,提高测试效率和速度。

  6. 浏览器控制:Selenium 可以完全控制浏览器的行为,如打开新窗口、切换窗口、处理弹窗、处理 Cookies 等。这使得测试人员可以模拟各种场景和情况,进行更全面和复杂的测试。

总体而言,Selenium 是一个功能强大、灵活且广泛使用的自动化测试工具,可以帮助开发人员和测试人员进行 Web 应用程序的自动化测试。无论是测试 Web 应用程序的功能、兼容性还是进行数据采集和挖掘,Selenium 都是一个重要的工具。

2.Selenium初试

1.环境安装

pip install selenium

2.下载浏览器驱动程序

下载驱动程序一定要和浏览器版本匹配!

驱动器下载路径:https://chromedriver.storage.googleapis.com/index.html

3.小试牛刀

from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from time import sleep
# 环境搭建
from selenium.webdriver import Chrome
# 创建一个Service对象
from webdriver_manager.chrome import ChromeDriverManager
service = Service(ChromeDriverManager().install())
web = Chrome(service=service)
# 向淘宝发送一个请求
web.get("https://www.taobao.com")
# 执行一组js程序 向下滚动
web.execute_script('window.scrollTo(0,document.body.scrollHeight)')
# 实现标签定位
search_input = web.find_element(By.ID, 'q')
# 标签的交互
search_input.send_keys('区块链入门')
# 定位搜索按钮
btn = web.find_element(By.CLASS_NAME, 'btn-search')
# 点击按钮
btn.click()
web.get('http://www.baidu.com')
sleep(2)
# 回退
web.back()
sleep(2)
web.forward()
sleep(5)
web.quit()

编写基于浏览器自动化的操作代码:

​ --发起请求:get(url)

​ --标签定位:find系列的方法

​ --标签交互:send_keys(‘xxx’)

​ --执行js程序:execute_script(‘jsCode’)

​ --前进,后退:forward()、back()

​ --关闭浏览器:quit()

3.iframe处理+动作链

当页面中存在 iframe 时,需要先切换到 iframe 中才能对其中的元素进行操作。
当处理 iframe(内嵌框架)和执行动作链(ActionChains)时,可以按照以下步骤在 Python 中使用 Selenium:

  1. 处理 iframe:
    在 Selenium 中,需要先切换到 iframe 才能对其中的元素进行操作。可以使用 switch_to.frame() 方法来切换到指定的 iframe。例如:
   from selenium import webdriverdriver = webdriver.Chrome()iframe_element = driver.find_element_by_tag_name("iframe")driver.switch_to.frame(iframe_element)

在切换到 iframe 后,可以使用常规的 Selenium 方法来定位和操作 iframe 中的元素。

  1. 执行动作链:动作链(ActionChains)是一系列连续的动作,可以模拟用户在页面上的复杂操作,如鼠标移动、拖拽、键盘操作等。Selenium 提供了 ActionChains 类来支持动作链的执行。动作链(ActionChains)是一系列连续的动作,可以模拟用户在页面上的复杂操作,如鼠标移动、拖拽、键盘操作等。在 Python 中,可以使用 ActionChains 类来执行动作链。以下是一个示例,展示了如何使用动作链来模拟鼠标移动和点击操作:
from selenium import webdriverfrom selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Chrome()actions = ActionChains(driver)element = driver.find_element_by_id("elementId")actions.move_to_element(element).click().perform()

在上述示例中,首先导入 webdriverActionChains 类。然后,创建一个 ActionChains 对象,并使用 move_to_element() 方法将鼠标移动到指定元素上,接着使用 click() 方法模拟点击操作,最后使用 perform() 方法执行动作链。
根据具体需求,可以使用其他的 ActionChains 方法,如 drag_and_drop()send_keys()double_click() 等来执行不同类型的动作。


http://www.ppmy.cn/news/1168324.html

相关文章

《数据结构、算法与应用C++语言描述》-队列的应用-图元识别问题

《数据结构、算法与应用C语言描述》-队列的应用-图元识别问题 图元识别 问题描述 数字化图像是一个 mxm 的像素矩阵。在单色图像中,每一个像素要么为0,要么为 1。值为0的像素表示图像的背景。值为1的像素表示图元上的一个点,称其为图元像素…

Android---RecyclerView替代ListView

RecyclerView 简称RV,是作为 ListView 和 GridView 的加强版出现,目的是在有限的屏幕之上展示大量的内容。因此,RecyclerView 的复用机制的实现是它的一个核心部分。 RV 常规使用方式 // 1 RecyclerView.setLayoutManager(); // 2 Recycler…

S7-1200通过CM CANopen模块与KINCO伺服连接

CM CANopen模块简介 CM CANopen模块(Profinet转CANopen)来自瑞典HMS ,由西 门子授权HMS公司开发,与S7-1200完美兼容。 可做为S7-1200与CANopen/CAN设备之间的桥梁,能够联接任意 CANopen或CAN 2.0A设备到SIMATIC S7-1…

打造自己的前端组件库(奶妈版,超详细)

打造自己的前端组件库 demo是开源的,自己上npm 或者 github 上都能搜到 新建vue项目(sass js vue2) vue create yt-ui 修改文件目录(如下) 修改: 1.src 更名 examples; 2. src/components移动到项目最外层;3.vue.config.js更改入口文件 /…

树状数组学习笔记

树状数组 树状数组的用途,主要是可以以 O ( log ⁡ n ) O(\log n) O(logn) 的时间复杂度维护前缀和。 对于树状数组的使用,我们开一个数组 c,c[x] 表示 [ x − lowbit ( x ) 1 , x ] [x-\text{lowbit}(x)1,x] [x−lowbit(x)1,x] 的区间和…

3、Kafka Broker

4.1 Kafka Broker 工作流程 4.1.1 Zookeeper 存储的 Kafka 信息 (1)启动 Zookeeper 客户端。 [hadoop102 zookeeper-3.5.7]$ bin/zkCli.sh(2)通过 ls 命令可以查看 kafka 相关信息。 [zk: localhost:2181(CONNECTED) 2] ls /kaf…

JVM第十七讲:调试排错 - Java 问题排查之Linux命令

调试排错 - Java 问题排查之Linux命令 本文是JVM第十七讲, Java 问题调试排错。Java 在线问题排查主要分两篇:本文是第一篇,通过linux常用命令排查。 文章目录 调试排错 - Java 问题排查之Linux命令在项目中,日志操作的常用命令1、…

dirsearch网站目录暴力破解

介绍: dirsearch是一个基于python3的命令行工具,常用于暴力扫描页面结构,包括网页中的目录和文件。相比其他扫描工具disearch的特点是: 支持HTTP代理多线程支持多种形式的网页(asp,php)生成报告&#xff0…