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,一经查实,立即删除!

相关文章

【C++学习】文件操作

模式介绍 模式标志描述ios::app追加模式,所有写入都追加到文件末尾。ios::ate文件打开后定位到文件末尾。ios::in打开文件用于读取。ios::out打开文件用于写入。ios::trunc如果该文件已经存在,其内容将在打开文件之前被截断,即把文件长度设为…

vi/vim的工作模式

vi/vim 是一款功能强大的文本编辑器,在 Linux 系统中广泛应用。它有三种基本的工作模式,分别是命令模式(Command Mode)、文本输入模式(Input Mode)和行末模式(Last line Mode)。这些…

如何在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代码自取。 目录 &…

GPT4 Vision对于盲人或低视力者将来会成为他们的眼睛直通大脑 还需要解决一些关键问题 骨传导能解决耳聋问题吗?

一位盲人测试者说: 感谢您倾听我们所有人并理解这项技术即使只是一瞥也带来了巨大的影响。在这项服务之前,我从未真正情感上理解一张图片的力量。标志和书中的页面都获得了新的意义,而且得到对在世或已故家庭成员的描述实在是不可思议。感谢…

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提交前言 至此,我们已经实现 图书借阅、收藏、评论等场景,最后来到【还书】场景,首先 还书的 入口 一般 是【我的借阅记录】,在这里可以根据产品设计,对于需要归还的书 操作【还书】,所以本文来实现【我的借阅记录】。…

报表自定义导出文件名

需求背景 一般报表模板文件名按照开发人员定义的规则都是英文或拼音字母,在业务人员使用导出excel或pdf的时候默认文件名为报表模板的文件名,此时用户希望导出文件名是报表的业务名称。 解决方案 硕迪报表提供jsp的标签自定义saveAsName属性&#xff…

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 强调的是高效组织团队之间如何通过自动化的工具协作和沟通来完成软件的生命周期管理,从而更快、更频繁地交付更稳定的…