Python自动化:selenium常用方法总结

使用的Python版本为3.8,selenium版本为4.15.2

请添加图片描述

Python自动化:selenium常用方法总结

        • 1. 三种等待方式
        • 2. 浏览器操作
        • 3. 8种查找元素的方法
        • 4. 高级事件

1. 三种等待方式
  1. 强制等待
    使用模块time下的sleep()实现等待效果
  2. 隐式等待
    使用driver.implicitly_wait()方法,具有全局性,在代码前面设置后,整个程序运行过程中都会有效,都会等待页面加载完成,在执行后续,不需要每次设置一次。
    缺点:非要加载整个页面才执行代码,这样影响代码的执行效率。
    参考代码:
from selenium import webdriverdriver = webdriver.Chrome()
driver.get(url='')
driver.implicitly_wait(5)
  1. 显示等待
    必须在每个需要等待的元素前面进行声明,明确要等到某个元素的出现或者某个元素的可点击等。 需要用到 :WebDriverWait 和 expected_conditions
    参考代码:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as ECele = WebDriverWait(driver,10,0.5).until(EC.presence_of_element_located(By.,''))
2. 浏览器操作

driver.maximize_window() # 最大屏幕
driver.minimize_window() # 最小屏幕
driver.quit() # 退出浏览器
driver.close() # 关闭当前页面
driver.set_window_size(width=,height=) # 设置浏览器的大小
driver.set_window_position(x=,y=) # 设置浏览器在电脑上显示的位置
driver.back() # 模拟浏览器后退按钮
driver.forward() # 模拟浏览器前进按钮
driver.refresh() # 刷新当前页面
driver.title # 当前页面的标题
driver.current_url # 当前页面的网址

3. 8种查找元素的方法
  1. By.XPATH 通用的查找方式
    获取百度页面输入框
driver.find_element(By.XPATH,"//input[@id='kw']").send_keys('哈哈')
  1. By.CLASS_NAME 通过class属性查找
driver.find_element(By.CLASS_NAME,"s_ipt").send_keys('哈哈')
  1. By.ID 通过id属性查找
driver.find_element(By.ID,"kw").send_keys('哈哈')
  1. By.CSS_SELECTOR 通过css选择器 会写css样式的就知道
driver.find_element(By.CSS_SELECTOR,"#kw").send_keys('哈哈')
  1. By.NAME 通过name属性进行查找
driver.find_element(By.NAME,"wd").send_keys('哈哈')
  1. By.LINK_TEXT 通过链接文本
    在百度页面找到贴吧超链接并进入
driver.find_element(By.LINK_TEXT,"贴吧").click()
  1. By.PARTIAL_LINK_TEXT 部分链接文本
driver.find_element(By.PARTIAL_LINK_TEXT,"贴").click()
  1. By.TAG_NAME 通过标签元素
4. 高级事件
  1. 浏览器弹框
# 浏览器弹框driver.switch_to.alert.accept()  确认.dismiss() 取消
  1. 框架页
driver.switch_to.frame()

之所以用到这个,是因为有的页面可能不单单是一个页面,而是通过frame或者iframe标签元素把几个页面组合成一个页面。查找元素时需要注意的是,如果查找的元素不在当前页面下,那么需要找到对应页面,然后使用上述那个方法,跳到这个对应页面下,然后才能找到对应元素。
请添加图片描述

  1. 窗口切换
objs = driver.window_handles
# 获取当前的窗口对象 列表
driver.switch_to.window(objs[1])
# 下标从0开始

4 . 滑块验证

from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import Bydriver = webdriver.Chrome()
driver.get(url='file:///D:/Sublime/vscode/Test/%E6%BB%91%E5%9D%97%E6%B5%8B%E8%AF%95/%E6%BB%91%E5%8A%A8%E9%AA%8C%E8%AF%81.html')
driver.maximize_window()
ele = driver.find_element(By.XPATH,"//div[@class='slider']")
# 滑块元素
ac = ActionChains(driver)
ac.click_and_hold(ele).move_by_offset(300,0).perform()
# 鼠标点击 握住 向右移动300像素
ac.release()
# 释放

运行结果:
在这里插入图片描述
【注】:还有很多高级操作,这里只是总结最基础的而已。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/221429.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

如何在Kali Linux安装Xrdp+cpolar内网穿透实现远程访问Kali系统

文章目录 前言1. Kali 安装Xrdp2. 本地远程Kali桌面3. Kali 安装Cpolar 内网穿透4. 配置公网远程地址5. 公网远程Kali桌面连接6. 固定连接公网地址7. 固定地址连接测试 前言 Kali远程桌面的好处在于,它允许用户从远程位置访问Kali系统,而无需直接物理访…

PyCharm连接远程服务器上Docker容器,使用远程服务器的python intercepter解释器和GPU资源 [本地调试深度学习代码]

概述 在编写常规深度学习代码时,总是需要使用服务器上的GPU资源,所以一般要写完代码,放到服务器,然后使用GPU运行。但是由于之前的习惯,总想本地调试一下或者本地直接跑测试结果,再放到服务器去跑。 网上…

【coco】掩膜mask影像转coco格式txt(含python代码)

最近在做实例分割,遇到二值掩膜影像——coco格式txt的实例分割转换问题,困扰很久,不知道怎么转换,转出来的txt没法用代码成功读取。一系列问题,索性记录下自己的结局路程,方便大家python代码自取。 目录 &…

DevOps搭建(五)-JDK安装详细步骤

1、官网下载 官方网站下载JDK,这里我们安装JDK8 https://docs.oracle.com/javase/8/docs/technotes/guides/install/install_overview.html 点击上图中的Java SE Downloads项目,也可直接点击下面链接进入: Java Downloads | Oracle 往下滚…

学习Linux(3)-Linux软件安装之yum

什么是yum yum( Yellow dog Updater, Modified)是一个在 Fedora 和 RedHat 以及 SUSE 中的 Shell 前端软件包管理器。 假设,在一台window系统的电脑上要用qq,那么我们回去下载qq的安装包,然后执行qq.exe文件在本机上进…

10 个顶级 iPhone 数据恢复软件工具评测

很多事情都可能导致 iPhone 数据丢失:iOS 更新失败、越狱错误、解锁问题等。如果您遇到类似情况并且想要访问您的文件,通常最好的解决方案是使用数据恢复工具。由于研究市场上可用的工具可能会花费您大量的时间(在尝试从 iPhone 恢复数据时&a…

7.25 SpringBoot项目实战【我的借阅记录】

文章目录 前言一、编写控制器二、编写服务层三、Git提交前言 至此,我们已经实现 图书借阅、收藏、评论等场景,最后来到【还书】场景,首先 还书的 入口 一般 是【我的借阅记录】,在这里可以根据产品设计,对于需要归还的书 操作【还书】,所以本文来实现【我的借阅记录】。…

SAP STMC教程

一、概述 SAP Technical Monitoring Cockpit(STMC)是SAP最新推出的数据迁移工具,方便在项目部署阶段进行期初数据的导入,是LSMW的小平替,做过LSMW的朋友应该都知道,LSMW步骤比较繁复,并且校验复…

从零开始创建一个项目,springBoot+mybatisPlus+mysql+swagger+maven

一,前提 从零开始创建一个项目,绑定了数据库 用到的技术栈:springBootmybatisPlusmysqlswaggermaven 二,创建项目步骤 1,创建项目 创建出来的项目结构如图所示 2,修改配置文件 因为我比较习惯yml语言&…

Java刷题篇——LeetCode118. 杨辉三角

1.题目描述 给定一个非负整数numRows,生成杨辉三角的前numRows行。 在杨辉三角中,每个数是它左上方和右上方的数的和。 示例1 输入:numRows 5 输出:[1],[1,1],[1,2,1],[1,3,3,1],[1,4,6,4,1] 示例2 输入:numRows 1…

如何在 Eolink Apikit 中发起 TCP/UDP 文档测试

TCP/UDP 是两种常用的网络传输协议。TCP 协议提供可靠的连接,而 UDP 协议提供不可靠的连接。 TCP 协议是面向连接的协议,在建立连接之前,客户端和服务器需要先握手。握手完成后,客户端和服务器之间就会建立一个可靠的连接。在连接…

开源协作知识库软件AFFINE如何本地部署并结合内网穿透实现远程访问——“cpolar内网穿透”

前言 本篇文章讲解Notion开源平替全能知识库工具AFFINE如何本地部署,并实现公网远程访问。AFFiNE 是一个全新的开源项目,旨在克服 Notion 和 Miro 在安全和隐私方面的一些局限性。它的设计目标是帮助用户将会议记录、待办事项、文档中的目标、视频会议白…

快速排序的非递归实现

上期我们实现了快速排序的递归实现,但是我们知道如果递归深度太深,栈就会溢出,所以我们本期将为大家讲述快速排序的非递归实现,我们需要用到栈的数据结构,我们知道栈中的数据全是在堆区开辟的空间,堆的空间…

Halcon reduce_domain和scale_image的作用

在Halcon中,reduce_domain是用于缩小图像域(Image Domain)的操作。 它的作用是通过指定一个感兴趣区域(ROI,Region of Interest),将图像数据限制在该区域内,从而实现对图像进行裁剪…

到底什么是DevOps

DevOps不是一组工具,也不是一个特定的岗位。在我看来DevOps更像是一种软件开发文化,一种实现快速交付能力的手段。 DevOps 强调的是高效组织团队之间如何通过自动化的工具协作和沟通来完成软件的生命周期管理,从而更快、更频繁地交付更稳定的…

UDP实现群聊

代码: import java.awt.*; import java.awt.event.*; import javax.swing.*; import java.net.*; import java.io.IOException; import java.lang.String;public class liaotian extends JFrame{private static final int DEFAULT_PORT8899;private JLabel stateLB…

基于javaweb实现的实践教学基地管理系统

一、系统架构 前端:html | js | css | bootstrap 后端:spring | springmvc | mybatis-plus 环境:jdk1.8 | mysql8 | tomcat | maven 二、代码及数据库 三、功能介绍 01. web-首页1 02. web-首页2 03. web-首页3 04. web-首页4 05. 管…

【TC3xx】GETH

目录 一、RGMII 二、SMI接口 三、TC3xx MCAL 3.1 MCU 3.2 Port 3.3 DMA 3.4 中断配置 3.5 ETH 3.6 集成 一、RGMII TC3xx支持MII/RMII/RGMII三种以太网数据通信接口。其中RGMII经常用于MAC和MAC之间,或MAC与PHY之间的通信,RGMII的带宽可以是10M…

Soul 推出“SoulX”AI人工智能模型,已应用于旗下 App“苟蛋”AI聊天机器人

Soul社交平台最近发布了名为”SoulX“的AI人工智能模型,SoulX将作为Soul “AIGC社交”布局的重要基建,具备prompt驱动、条件可控生成、上下文理解、多模态理解等能力,垂直应用于平台上多元社交互动场景,如智能对话机器人、AI辅助聊…

为什么越来越多的人从事软件测试行业?

1.市场需求增加:随着数字化转型和互联网的普及,各行各业都需要高质量、稳定可靠的软件来支持其业务运作。因此,对软件测试人员的需求也随之增加。同时,新兴技术的发展,如物联网、大数据、区块链、人工智能等&#xff0…