关于selenium各种操作语句(方便查询便携版)

定位方法 #功能

from selenium import webdriver#载入驱动
from selenium.webdriver.common.by import By
#新版载入by,旧版的find_element_by_id语句一般会被划掉,然后给你提示说语句已淘汰,不过目前还是可以运行,只是代码不好看。

#启动驱动的两种写法:
with webdriver.Chrome() as driver

driver=chromedriver.chrome()

#八大基础定位
find_element(By.ID,'value')	#定位ID
find_element(By.NAME,'value')	#定位name
find_element(By.CLASS_NAME,'value')	#定位class
find_element(By.TAG_NAME,'value')	#定位tag功能标签
find_element(By.LINK_TEXT,'value')	#定位link
find_element(By.PARTIAL_LINK_TEXT,'value')	#定位局部link,模糊查找
find_element(By.CSS_SELECTOR,'value')	#定位CSS多属性组合
find_element(By.XPATH,'value')	#定位多属性组合


#上下左右模糊定位法
above()	#定位到现元素上面的元素
below()	#定位到现元素下面的元素
toLeftOf()	#定位到现元素左面的元素
tpRightOf()	#定位到现元素右面的元素
near()	#定位到最多距现元素50个像素远的元素


#输入、拖放、点击
find_element().send_keys("内容")	#定位并输入文本

"source = driver.find_element(By.ID, ""source"")
target = driver.find_element(By.ID, ""target"")
ActionChains(driver).drag_and_drop(source, target).perform()"	#拖放功能

find_element().click()	#定位并点击


#创建、打开、网址、前进、后退、刷新以及读取页面标题
driver = webdriver.Chrome()	#创建Chrome浏览器对象
driver.get("https://example.org") 	#打开网页
driver.current_url	#获取当前网址
driver.back()	#按下浏览器的后退按钮
driver.forward()	#按下浏览器的前进按钮
driver.refresh()	# 刷新当前网页
driver.title	#从浏览器中读取当前页面标题


#handle、跳转、关闭、退出、嵌网操作
driver.current_window_handle	#当打开一个新窗口时,获取该窗口的处理权

"find_element().click()
driver.switch_to.window(window_handle)"	#当点击一个链接跳转到新窗口时,需要switch到新窗口

"driver.switch_to.new_window('tab')
driver.switch_to.new_window('window')"	#创建新窗口并switch

"driver.close()
driver.switch_to.window(original_window)"	#关闭一个窗口或tab

driver.quit()	#退出浏览器

driver.switch_to.frame(1)	#Frames和Iframes,点击iframes中的按钮

driver.switch_to.default_content()	#退出一个frame或frameset


#窗口大小、位置、最大化、最小化、全屏
"size = driver.get_window_size()
width1 = size.get(""width"")
height1 = size.get(""height"")  "	#获取窗口大小

driver.set_window_size(1024, 768)	#设置窗口大小

"position = driver.get_window_position()
x1 = position.get('x')
y1 = position.get('y') "	#获得窗口位置

driver.set_window_position(0, 0)	#设置窗口位置

driver.maximize_window()	#最大化窗口

driver.minimize_window()	#最小化窗口

driver.fullscreen_window()	#窗口全屏


#网页加载等待,还有一种流式等待没搞懂,这里忽略
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC#条件等待
"WebDriverWait(driver, timeout=3).until(some_condition) "	#显式等待网页加载完成
driver.implicitly_wait(10)	#隐式等待


#警报处理、处理确认和处理提示
"river.find_element(By.LINK_TEXT, ""See an example alert"").click()
alert = wait.until(expected_conditions.alert_is_present())
text = alert.text
alert.accept()"	#处理警报

"driver.find_element(By.LINK_TEXT, ""See a sample confirm"").click()
wait.until(expected_conditions.alert_is_present())
alert = driver.switch_to.alert
alert.dismiss()"	#处理确认

"driver.find_element(By.LINK_TEXT, ""See a sample prompt"").click()
wait.until(expected_conditions.alert_is_present()
alert = Alert(driver)
alert.send_keys(""Selenium"")
alert.accept()"	#处理提示




#HTTP代理
"PROXY = ""<HOST:PORT>""
webdriver.DesiredCapabilities.CHROME['proxy'] = {
    ""httpProxy"": PROXY,
    ""ftpProxy"": PROXY,
    ""sslProxy"": PROXY,
    ""proxyType"": ""MANUAL"",}"	#Http代理


#三种加载方式
from selenium.webdriver.chrome.options import Options#载入optiions
options.page_load_strategy = 'normal'	#normal(网页完全加载)
options.page_load_strategy = 'eager'	#eager(只加载主页面,忽略表格、图像和子框架)
options.page_load_strategy = 'none'	#none(仅加载主页面)


#镶嵌查找,叠中叠
driver.find_element(By.NAME, "q")	#查找元素

"for e in elements:
    print e.text  "	#查找多元素

变量.find_element(By.NAME, "q")	#从元素下查找单个元素

"elements = element.find_elements(By.TAG_NAME, 'p')
  for e in elements:
      print e.text "	#从元素下查找多个元素

"driver.find_element(By.CSS_SELECTOR, '[name=""q""]').send_keys(""webElement"")
river.switch_to.active_element.get_attribute(""title"")
  print attr"	#获取当前锚定元素



#键盘组合操作
from selenium.webdriver.common.keys import Keys#载入key

driver.find_element(By.NAME, "q").send_keys("webdriver" + Keys.ENTER)	
#sendKeys输入+enter

"driver.find_element(By.NAME, ""q"").send_keys(""webdriver"" + Keys.ENTER)
webdriver.ActionChains(driver).key_down(Keys.CONTROL).send_keys(""a"").perform()"	#keyDown 输入+enter,再ctrl+a

action.key_down(Keys.SHIFT).send_keys_to_element(search, "qwerty").key_up(Keys.SHIFT).send_keys("qwerty").perform()	#keyUp长按

.Clear()	#clear清除内容

参考原文如下,有需要请转原文链接,写得很详细,本文主要为便捷查询所用,偏简略。

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。原文链接:https://blog.csdn.net/whitedrogen/article/details/106216401

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【工厂模式】工厂方法模式、抽象工厂模式-简单例子

简单工厂模式&#xff0c;请跳转到我的另一篇博客【工厂模式】简单工厂模式-简单例子-CSDN博客 四、工厂方法模式 &#xff08;1&#xff09;这部分还是不变&#xff0c;创建一个Car接口&#xff0c;和两个实现类。 public interface Car {void name(); }public class WuLing…

深入刨析 mysql 底层索引结构B+树

文章目录 前言一、什么是索引&#xff1f;二、不同索引结构对比2.1 二叉树2.2 平衡二叉树2.3 B-树2.4 B树 三、mysql 的索引3.1 聚簇索引3.2 非聚簇索引 前言 很多人看过mysql索引的介绍&#xff1a;hash表、B-树、B树、聚簇索引、主键索引、唯一索引、辅助索引、二级索引、联…

C#语法知识之循环语句

5、循环语句 文章目录 1、while思考1 斐波那契数列思考2 判断一个数是否为质数思考3 找出100以内的质数 2、do...while3、for思考1 找水仙花数思考2 乘法表 1、while 1、作用 让代码重复去执行 2、语法相关 while(bool类型值){//当满足条件时&#xff0c;就会执行while语句…

大话设计模式-里氏代换原则

里氏代换原则&#xff08;Liskov Substitution Principle&#xff0c;LSP&#xff09; 概念 里氏代换原则是面向对象设计的基本原则之一&#xff0c;由美国计算机科学家芭芭拉利斯科夫&#xff08;Barbara Liskov&#xff09;提出。这个原则定义了子类型之间的关系&#xff0…

linux下使用qt+mpv调用GPU硬件解码

linux下GPU硬件解码接口&#xff0c;常用的有vdpau和vaapi。 mpv是基于mplayer开发的一个播放器。此外&#xff0c;mpv还提供了函数库libmpv&#xff0c;通过使用libmpv可以编写一个简单的播放器。 基于qtlibmpv的demo&#xff0c;官方例子代码如下&#xff1a;https://github.…

Java maven项目打包自动测试并集成jacoco生成代码测试覆盖度报告

引入Junit 引入 junit5 单元测试依赖 <properties><junit.version>5.10.2</junit.version><jacoco.version>0.8.12</jacoco.version></properties><dependencies><!-- 单元测试 --><dependency><groupId>org.jun…

JUC 线程间通信

前言 本篇文章我将解释《并发编程的艺术》一书中一个经典的实现线程间通信的案例&#xff0c;主要是使用wait() 和 notifyAll() 方法来实现的。 这段代码的作用是通过 wait() 和 notifyAll() 方法实现线程间的等待和通知机制。具体来说&#xff0c;代码中创建了两个线程&…

论文阅读-Multiple Targets Directed Greybox Fuzzing (Hongliang Liang,2024)

标题: Multiple Targets Directed Greybox Fuzzing (Hongliang Liang,2024) 作者: Hongliang Liang, Xinglin Yu, Xianglin Cheng, Jie Liu, Jin Li 期刊: IEEE Transactions on Dependable and Secure Computing 研究问题: 发现局限性&#xff1a;之前的定向灰盒测试在有…

webAssembly学习及使用rust

学习理解 webAssembly 概念知识&#xff0c;使用 API 进行 web 前端开发。 概念 是一种运行在现代网络浏览器中的新型代码&#xff0c;并且提供新的性能特性和效果。它有一种紧凑的二进制格式&#xff0c;使其能够以接近原生性能的速度运行。C/C、 C#、Rust等语言可以编译为 …

ruby 配置代理 ip(核心逻辑)

在 Ruby 中配置代理 IP&#xff0c;可以通过设置 Net::HTTP 类的 Proxy 属性来实现。以下是一个示例&#xff1a; require net/http// 获取代理Ip&#xff1a;https://www.kuaidaili.com/?refrg3jlsko0ymg proxy_address 代理IP:端口 uri URI(http://www.example.com)Net:…

【React】Sigma.js框架网络图-入门篇

一、介绍 Sigma.js是一个专门用于图形绘制的JavaScript库。 它使在Web页面上发布网络变得容易&#xff0c;并允许开发人员将网络探索集成到丰富的Web应用程序中。 Sigma.js提供了许多内置功能&#xff0c;例如Canvas和WebGL渲染器或鼠标和触摸支持&#xff0c;以使用户在网页上…

MATLAB R2024a:重塑商业数学软件的未来

在数字化浪潮席卷全球的今天&#xff0c;商业数学软件已经成为企业、研究机构乃至个人不可或缺的工具。而在这其中&#xff0c;MATLAB R2024a以其卓越的性能和广泛的应用领域&#xff0c;正逐步成为商业数学软件的新标杆。 MATLAB R2024a不仅继承了前代版本的优秀基因&#xf…

Golang 采集爬虫如何配置代理 IP

在 Golang 中配置代理 IP&#xff0c;可以通过设置 http.Transport 的 Proxy 属性来实现&#xff1a; 下述代码中的 代理IP 和 端口 替换为实际的代理服务器地址和端口&#xff0c;然后运行该程序即可通过代理服务器访问对应网站。 package mainimport ("fmt""…

超详细的Maven安装与使用还有内容讲解

文章目录 作用简介模型仓库 安装配置IDEA配置Maven坐标概念主要组成 IDEA创建Maven项目基本使用常用命令生命周期使用坐标导入jar包 注意事项清理maven仓库更新索引依赖 作用 Maven是专门用于管理和构建Java项目的工具&#xff0c;它的主要功能有&#xff1a; 提供了一套标准化…

MATLAB实现禁忌搜索算法优化柔性车间调度fjsp

禁忌搜索算法的流程可以归纳为以下几个步骤&#xff1a; 初始化&#xff1a; 利用贪婪算法或其他局部搜索算法生成一个初始解。清空禁忌表。设置禁忌长度&#xff08;即禁忌表中禁止操作的期限&#xff09;。邻域搜索产生候选解&#xff1a; 通过特定的搜索算子&#xff08;如…

AWS账号注册以及Claude 3 模型使用教程!

哈喽哈喽大家好呀&#xff0c;伙伴们&#xff01;你听说了吗&#xff1f;最近AWS托管了大热模型&#xff1a;Claude 3 Opus&#xff01;想要一探究竟吗&#xff1f;那就赶紧来注册AWS账号吧&#xff01;别担心&#xff0c;现在注册还免费呢&#xff01;而且在AWS上还有更多的大…

【北京迅为】《iTOP-3588开发板系统编程手册》-第10章 存储映射 I/O

RK3588是一款低功耗、高性能的处理器&#xff0c;适用于基于arm的PC和Edge计算设备、个人移动互联网设备等数字多媒体应用&#xff0c;RK3588支持8K视频编解码&#xff0c;内置GPU可以完全兼容OpenGLES 1.1、2.0和3.2。RK3588引入了新一代完全基于硬件的最大4800万像素ISP&…

Spark-Scala语言实战(17)

我带着大家一起来到Linux集群环境下&#xff0c;学习我们的spark。想了解的朋友可以查看这篇文章。同时&#xff0c;希望我的文章能帮助到你&#xff0c;如果觉得我的文章写的不错&#xff0c;请留下你宝贵的点赞&#xff0c;谢谢。 Spark-Scala语言实战&#xff08;16&#x…

基于Springboot的社区帮扶对象管理系统(有报告)。Javaee项目,springboot项目。

演示视频&#xff1a; 基于Springboot的社区帮扶对象管理系统&#xff08;有报告&#xff09;。Javaee项目&#xff0c;springboot项目。 项目介绍&#xff1a; 采用M&#xff08;model&#xff09;V&#xff08;view&#xff09;C&#xff08;controller&#xff09;三层体系…

微信小程序日期增加时间完成订单失效倒计时(有效果图)

效果图 .wxml <view class"TimeSeond">{{second}}</view>.js Page({data: {tiem_one:,second:,//倒计时deadline:,},onLoad(){this.countdown();},countdown(){let timestamp Date.parse(new Date()) / 1000;//当前时间戳let time this.addtime(2024…
最新文章