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

【Selenium中】——全栈开发——如桃花来

目录索引

  • ==查找元素:==
    • 查找方法:
    • 单个元素查找:
    • 多个元素查找:
      • *代码演示:*
  • ==元素交互操作:==
    • 清空文字:
  • ==推荐的变量名定义名称:==
  • ==执行JavaScript :==
    • 滚动页面方法:
      • *滚动到底部:*
      • *滚动到顶部:*
      • *其他:*

查找元素:

核心语法:

find_element()

element中文释义是元素,也就是找元素的意思

查找方法:

这里只说明3.8以后版本的用法

- find_element(By.ID,"id名") 根据id属性来定位
- find_element(By.NAME,"name") 根据name元素来定位
- find_element(By.XPATH,"xpath语法") 根据xpath语法来定位,作者重点推荐这个方法
- find_element(By.TAG_NAME,"标签名") 根据标签名来定位
- find_element(By.CLASS_NAME,"类名") 根据class的名字来定位
- find_element(By.CSS_SELECTOR,"#id") 根据css选择器来定位
- find_element(By.LINK_TEXT,"text") 根据文本属性来定位,这个也比较推荐可以直接根据渲染后的界面直接定位

单个元素查找:

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.wait import WebDriverWait
import timebrowser = webdriver.Chrome()
browser.get("https://www.baidu.com/")
#先定位搜索框
text_input1 = browser.find_element(By.XPATH,'//input[@id="kw"]')
text_input1.send_keys("美女")
text_input1.send_keys(Keys.ENTER)
time.sleep(2)
wait = WebDriverWait(browser,10)
wait.until(EC.presence_of_element_located((By.LINK_TEXT,"图片")))
browser.find_element(By.LINK_TEXT,"跳舞").click()
time.sleep(5)
browser.close()

这里要注意一个细节问题,就是名字叫做“图片”的元素跳转前后跳转后的界面都有这个元素,会造成跳转混乱。所以这个time.sleep放的位置就起到了重要的作用,当然你也可以在wait.until里面选取适当的元素,这里主要是故意使用的图片。

多个元素查找:

查找的方式是find_elements()
注意注意,这里多了个s,多个元素查找要加s

代码演示:

find_inputs = browser.find_elements(By.XPATH,"//div/a[@class='c-color-t c-line-clamp1 tags_2yHYj ']")
print(find_inputs)#以列表形式返回数据
#我们要通过循环遍历来提取数据
# find_inputs = browser.find_elements(By.XPATH,"//*[@id='2']/div/div/div[2]/div[1]/div[@class='toplist1-tr_4kE4D']")
print(type(find_inputs))
for i in find_inputs:print(i)

呈现效果:
在这里插入图片描述

我们要查找的多元素框框

在这里插入图片描述

元素交互操作:

对获取的元素调用交互方法

清空文字:

"""
比如我在搜索框里输入美女的文字
然后又想把这个文字给删除该怎么做呢
"""

语法:

#text_input和button均为变量名
text_input.clear()#清空输入框
text_input.send_keys()#输入内容也可用于按下按键
browser.find_element()#单个查找元素
browser.find_elements()#多个查找元素
button.click()#单击

更多操作: http://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.remote.webelement

推荐的变量名定义名称:

  • text_input:用于输入或者按键的变量名
  • button:用于会按下的按键
  • find_input:用于其他寻找的元素

执行JavaScript :

selenium只能操作页面内部的东西,有一些操作必须借助JS实现,比如说实现添加一个页面,比如说下拉滚动条。

滚动页面方法:

先记住两个即可:滚动到底部、滚动到顶部

execute_script()

execute中文释义:执行
script中文释义:脚本;剧本

滚动到底部:

window.scrollTo(0,document.body.scrollHeight)

滚动到顶部:

window.scrollTO(0,0)

其他:

说明:
window:js的window对象
scrollTo:window的方法,可以滚到页面的任何位置
scrollHeight:是dom元素的通用属性,document.body.scrollHeight会返回body元素的高度,基本上就是页面的高度
scrollLeft:获取位于对象左边界和窗口目前可见内容的最左端之间的距离
scrollTop:获取位于对象最顶端和窗口中课件内容的最顶端之间的距离
scrollWidth:获取对象滚动的宽度

相关文章:

【Selenium中】——全栈开发——如桃花来

目录索引 查找元素:查找方法:单个元素查找:多个元素查找:*代码演示:* 元素交互操作:清空文字: 推荐的变量名定义名称:执行JavaScript :滚动页面方法:*滚动到底…...

Sarsa增强版之Sarsa-λ依然走迷宫

Sarsa-λ(Sarsa Lambda)是Sarsa算法的一种变体,其中“λ”表示一个介于0和1之间的参数,用于平衡当前状态和之前所有状态的重要性。 Sarsa算法是一种基于Q-learning算法的增量式学习方法,通过在实际环境中不断探索和学…...

生成 Cypher 能力:MOSS VS ChatGLM

生成 Cypher 能力:MOSS VS ChatGLM 生成 Cypher 能力:MOSS VS ChatGLM一、 测试结果二、 测试代码(包含Prompt) Here’s the table of contents: 生成 Cypher 能力:MOSS VS ChatGLM MOSS介绍:MOSS 是复旦大…...

数据库的键和存储

主键:数据库表中对存储数据对象给予以唯一和完整表示的数据列或属性的组合。一个数据列只能有一个主键,且主键的取值不能缺失,即不能为空。 外键:在一个表中存在另一个表得主键称此为表的外键。 为什么用自增列作为主键? 如果我们定义了主…...

基于AT89C51单片机的并入串出乘法口诀的设计与仿真

点击链接获取Keil源码与Project Backups仿真图: https://download.csdn.net/download/qq_64505944/87779146?spm1001.2014.3001.5503 源码获取 并入串出乘法口诀的设计与仿真系统设计 目录 第一章 概述 3 1.1课题研究及意义 3 1.2课题设计内容 4 第二章系统设计…...

人生在世皆有过错,来一起看看Java中的异常吧!!!

Java中的异常问题详解 一、异常的概念与分类 1.异常概念 概念:Java异常是一个描述在代码段中发生异常的对象,当发生异常情况时,一个代表该异常的对象被创建并且在导致该异常的方法中被抛出,而该方法可以选择自己处理异常或者传…...

linux 测试连接网络和端口 telnet

一、安装telnet 1、检测telnet-server的rpm包是否安装 [rootlocalhost ~]# rpm -qa telnet-server 若无输入内容,则表示没有安装。出于安全考虑telnet-server.rpm是默认没有安装的,而telnet的客户端是标配。即下面的软件是默认安装的。 2、若未安装&…...

一文快速入门体验 Hibernate

前言 Hibernate 是一个优秀的持久层的框架,当然,虽然现在说用得比较多的是 MyBaits,但是我工作中也不得不接触 Hibernate,特别是一些老项目需要你维护的时候。所以,在此写下这篇文章,方便自己回顾&#xf…...

【RabbitMQ】SpringAMQP

RabbitMQ 1.初识MQ 1.1.同步和异步通讯 微服务间通讯有同步和异步两种方式: 同步通讯:就像打电话,需要实时响应。 异步通讯:就像发邮件,不需要马上回复。 两种方式各有优劣,打电话可以立即得到响应&am…...

错题汇总08

1.如果友元函数重载一个运算符时,其参数表中没有任何参数则说明该运算符是 A 一元运算符 B 二元运算符 C 选项A)和选项B)都可能 D 重载错误 运算符重载 1.重载成类的成员函数------>形参数目看起来比该运算符需要的参数个数少1&#x…...

使用urllib库简单入门

使用urllib库简单入门 Python中的urllib库是一个非常强大的工具,它提供了一些模块,如urllib.request、urllib.parse、urllib.error、urllib.robotparser等,可以用来处理URLs和网页数据的获取、发送和处理。 在本文中,我们将介绍…...

C++学习 Day11

目录 1. 再谈构造函数 1.1 构造函数体赋值 1.2 初始化列表 1.3 explicit关键字 2. stastic成员 2.1 概念 2.2 特性 1. 再谈构造函数 1.1 构造函数体赋值 在创建对象时,编译器通过调用构造函数,给对象中各个成员变量一个合适的初始值。 class Date…...

python中函数与类 类中的方法-静态方法/动态方法

class student():position即令def __init__(self,name,age):self.namenameself.ageagedef eat(self):passclassmethoddef cla(cls):passstaticmethoddef sta():passpassstustudent(name张三,age12) print(stu.position)stu.sta() stu.cla()# 直接使用静态和类方法 student.cla(…...

基于trace_id实现ForkJoinPool的链路追踪

一、引言 之前写过一篇博客:基于trace_id的链路追踪(含Feign、Hystrix、线程池等场景),主要介绍在微服务体系架构中,如何实现分布式系统的链路追踪的博客,其中主要实现了以下几种场景: Filter…...

Qt推流程序(视频文件/视频流/摄像头/桌面转成流媒体rtmp+hls+webrtc)可在网页和播放器远程观看

一、前言说明 推流直播就是把采集阶段封包好的内容传输到服务器的过程。其实就是将现场的视频信号从手机端,电脑端,摄影机端打包传到服务器的过程。“推流”对网络要求比较高,如果网络不稳定,直播效果就会很差,观众观…...

ChatGPT入门到高级【第一章】

第一章:Chatgpt的起源和发展 1.1 人工智能和Chatbot的概念 1.2 Chatbot的历史发展 1.3 机器学习技术在Chatbot中的应用 1.4 Chatgpt的诞生和发展 第二章:Chatgpt的技术原理 2.1 自然语言处理技术 2.2 深度学习技术 2.3 Transformer模型 2.4 GPT模型 第…...

云原生应用架构

本博客地址:https://security.blog.csdn.net/article/details/130566883 一、什么是云原生应用架构 成为云原生应用至少需要满足下面几个特点: ● 使用微服务架构对业务进行拆分。单个微服务是个自治的服务领域,对这个领域内的业务实体能够…...

rem、px、em的区别 -前端

文章目录 三者的区别特点与换算举例emrem 总结一总结二 三者的区别 在css中单位长度用的最多的是px、em、rem,这三个的区别是: 一、px是固定的像素,一旦设置了就无法因为适应页面大小而改变。 二、em和rem相对于px更具有灵活性,…...

分享几款小白从零开始学习的会用到的工具/网站

大二狗接触编程也有两年了,差生文具多这大众都认可的一句话,在这里蹭一下这个活动分享一下从0开始学习编程有啥好用的工具 目录 伴侣一、Snipaste截图工具 伴侣二、Postman软件(可用ApiPost平替) 伴侣三、字体图标网站 伴侣四…...

第八章 文件处理命令

第八章 文件处理命令 一、 文本编辑器 vi • vi 是 Unix 类操作系统中最为流行的文本编辑器。尽管目前 已有 gedit 等一些工作在图形界面下使用起来也更为方便 的文本编辑器,但在很多情况下,vi 这种专为字符界面操 作而设计的编辑器恐怕还是要充当首…...

无机布防火卷帘门报价透明,包工包料,一次说清所有费用

很多客户在选购无机布防火卷帘门时,最关心实际成交价格,也担心报价不清晰,后期产生各类额外支出。行业内产品定价参差不齐,选材做工不同,最终价位自然存在差距,挑选时不能只看表面低价。 👉 点击…...

Unity-MCP协议:可嵌入、可协商的AI上下文通信标准

1. 这不是又一个“AI插件”,而是Unity开发工作流的底层重定义你有没有过这样的时刻:在Unity里反复调整Animator Controller的过渡条件,只为让角色转身动画不穿模;写完一段NavMesh寻路逻辑,却要花两小时调试Agent卡在斜…...

告别沉浸式白屏!UniApp中iOS/Android底部安全区与顶部状态栏颜色自定义全攻略

告别沉浸式白屏!UniApp中iOS/Android底部安全区与顶部状态栏颜色自定义全攻略当开发者尝试在UniApp中实现沉浸式设计时,往往会遇到一个令人头疼的问题——默认的白色安全区和状态栏导致界面元素(如电池图标、信号强度)几乎不可见。…...

基于声卡与电流互感器的安全交流功率测量系统设计与实践

1. 项目概述:用声卡安全测量交流功率我一直对各种测量技术抱有浓厚的兴趣,毕竟“测量即认知”这句老话在今天依然适用。对于电力消耗和产出,没有什么比直接测量更能说明问题了。交流功率的测量,核心在于同时获取电压和电流的瞬时值…...

从安装到排错:手把手解决Linux服务器上Nacos启动失败的十大常见问题

从安装到排错:手把手解决Linux服务器上Nacos启动失败的十大常见问题当你在Linux服务器上部署Nacos时,是否遇到过启动失败却无从下手的困境?作为阿里巴巴开源的服务发现和配置管理平台,Nacos在微服务架构中扮演着重要角色。然而&am…...

Hermes Agent 框架如何对接 Taotoken 作为自定义模型供应商并配置环境变量

🚀 告别海外账号与网络限制!稳定直连全球优质大模型,限时半价接入中。 👉 点击领取海量免费额度 Hermes Agent 框架如何对接 Taotoken 作为自定义模型供应商并配置环境变量 Hermes Agent 是一个流行的 AI 代理开发框架&#xff0…...

CMSIS-DAP调试器原理与应用:以Elektor mbed interface为例

1. 项目概述:Elektor mbed interface [150554] 是什么?如果你玩过ARM Cortex-M系列的单片机,尤其是NXP LPC800系列,那你可能对“CMSIS-DAP”这个调试器标准不陌生。它是由ARM官方推出的一个开源调试接口标准,最大的好处…...

怎么理解Filter不是在afterCompetition里面remove掉ThreadLocal里面的东西,而是说在finally块里面remove

文章目录1. 核心原因:Filter 的“套娃(洋葱圈)”执行模型2. 为什么不能(也无法)在这里用 afterCompletion?维度一:Filter 拿不到 afterCompletion维度二:生命周期顺序的致命冲突总结…...

3步精通WaveTools:鸣潮全场景性能优化终极指南

3步精通WaveTools:鸣潮全场景性能优化终极指南 【免费下载链接】WaveTools 🧰鸣潮工具箱 项目地址: https://gitcode.com/gh_mirrors/wa/WaveTools 开源优化工具WaveTools作为《鸣潮》玩家必备的性能调校助手,通过深度配置优化实现画质…...

Windows 11终极优化指南:Win11Debloat一键清理系统提升51%性能

Windows 11终极优化指南:Win11Debloat一键清理系统提升51%性能 【免费下载链接】Win11Debloat A simple, lightweight PowerShell script that allows you to remove pre-installed apps, disable telemetry, as well as perform various other changes to declutte…...