Selenium——获取元素和操纵元素的方法

1、获取元素的方法

1、通过id获取

element = wd.find_element(By.ID,"id")

2、通过classname获取

elements = wd.find_elements_by_class_name("plant")
for element in elements:print(element.text)

3、通过tagname获取元素

elements = wd.find_elements_by_tag_name("span")
for element in elements:print(element.text)

find_element 和 find_elements 的区别

使用 find_elements 选择的是符合条件的 所有 元素, 如果没有符合条件的元素, 返回空列表

使用 find_element 选择的是符合条件的 第一个 元素, 如果没有符合条件的元素, 抛出 NoSuchElementException 异常

4、通过WebElement对象选择元素

WebDriver 对象选择元素的范围是整个web页面,而WebElement对象选择元素的范围是该元素的内部。

element = wd.find_element(By.ID,"container")
elements = element.find_elements(By.TAG_NAME,"span")

等待元素出现:wd.implicitly_wait(10)

from selenium import webdriver
from selenium.webdriver.common.by import Bywd = webdriver.Chrome() #控制器
wd.implicitly_wait(10)  # 等待元素出现
wd.get("https://www.byhy.net/_files/stock1.html")insert_element = wd.find_element(By.ID,"kw")    #搜索框
insert_element.send_keys("四川")  #在搜索框中输入元素
submit_element = wd.find_element(By.ID,"go")    # 查询按钮
submit_element.click()  #点击查询element = wd.find_element(By.ID,"1")    #在查询结果中查找id为1的元素
print(element.text)
2、操控元素的方法

1、输入操作

element.clear()	# 清除输入框中的元素
element.send_keys()

2、获取文本信息

print(element.text)

3、点击操作

element.click()

4、获取元素属性

在这里插入图片描述

element = wd.find_element(By.ID, 'input_name')
print(element.get_attribute('placeholder'))

5、获取整个元素对应的HTML

要获取整个元素对应的HTML文本内容,可以使用 element.get_attribute('outerHTML')
如果只是想获取某个元素内部的HTML文本内容,可以使用 element.get_attribute('innerHTML')

6、获取输入框里面的文字

element.get_attribute('value')

7、获取元素文本内容2

通过WebElement对象的 text 属性,可以获取元素 展示在界面上的 文本内容。

但是,有时候,元素的文本内容没有展示在界面上,或者没有完全完全展示在界面上。 这时用WebElement对象的text属性,获取文本内容,就会有问题。

出现这种情况,可以尝试使用 element.get_attribute('innerText') ,或者 element.get_attribute('textContent')

使用 innerText 和 textContent 的区别是,前者只显示元素可见文本内容,后者显示所有内容(包括display属性为none的部分)

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

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

相关文章

nacos核心源码深度剖析

文章目录 一、nacos1.4.1版本:服务注册与发现架构原理1、基本原理2、Nacos&Ribbon&Feign核心微服务架构图3、Nacos架构图4、核心功能点5、核心功能源码分析(1)客户端注册逻辑(2)服务端注册接口(3&a…

python:机器学习特征优选

作者:CSDN _养乐多_ 在Python中进行机器学习特征选择的方法有很多种。以下是一些常用的方法: 过滤法(Filter Methods):通过统计方法或者相关性分析来评估每个特征的重要性,然后选择最相关的特征。常用的…

Linux内核--设备驱动(七)媒体驱动框架整理--HDMI框架(2)

目录 一、引言 二、drm框架 ------>2.1、画布( FrameBuffer ) ------>2.2、绘图现场(CRTC) ------>2.3、输出转换器(Encoder ) ------>2.4、连接器 (Connector ) ------>2.5、显示面(Planner) 三、VOP部分详解 ------>3.1、dts ------>3.2、v…

【0DAY】瑞友天翼应用虚拟化系统index.php接口处存在SQL注入漏洞导致程RCE

免责声明:文章来源互联网收集整理,请勿利用文章内的相关技术从事非法测试,由于传播、利用此文所提供的信息或者工具而造成的任何直接或者间接的后果及损失,均由使用者本人负责,所产生的一切不良后果与文章作者无关。该…

04-程序控制结构

1. 控制结构介绍 决定程序是如何执行的。 三大流程结构 顺序结构选择结构循环结构 顺序结构 程序从上到下依次执行,中间没有任何判断和跳转。 简单示例 public class Main {public static void main(String[] args) {System.out.println("这是第一行&qu…

每日算法之路径总和

题目描述 给定一个二叉树的根节点 root ,和一个整数 targetSum ,求该二叉树里节点值之和等于 targetSum 的 路径 的数目。 路径 不需要从根节点开始,也不需要在叶子节点结束,但是路径方向必须是向下的(只能从父节点到…

和comate一起,用JavaScript实现一个简易版五子棋小游戏

前言 五子棋起源于中国,是全国智力运动会竞技项目之一,是一种两人对弈的纯策略型棋类游戏。双方分别使用黑白两色的棋子,下在棋盘直线与横线的交叉点上,先形成五子连珠者获胜。 这次和Baidu Comate智能代码助手共同完成这个小游戏…

HarmonyOS NEXT应用开发之多模态页面转场动效实现案例

介绍 本示例介绍多模态页面转场动效实现:通过半模态转场实现半模态登录界面, 与全屏模态和组件转场结合实现多模态组合登录场景,其中手机验证码登录与账号密码登录都为组件, 通过TransitionEffect.move()实现组件间转场达到近似页…

在Python中获取当前线程的名字

多线程编程是一种常见的编程范式,它允许程序同时执行多个任务。在Python中,​​threading​​模块提供了对多线程编程的支持。了解和管理当前运行的线程是多线程编程中的一个重要方面。本技术博客将介绍如何在Python中获取当前线程的名字,并提…

Linux入门攻坚——22、通信安全基础知识及openssl、CA证书

Linux系统常用的加解密工具:OpenSSL,gpg(是pgp的实现) 加密算法和协议: 对称加密:加解密使用同一个秘钥; DES:Data Encryption Standard,数据加密标准&…

meshlab: pymeshlab保存物体的横截面(compute planar section)

一、关于环境 请参考:pymeshlab遍历文件夹中模型、缩放并导出指定格式-CSDN博客 二、关于代码 本文所给出代码仅为参考,禁止转载和引用,仅供个人学习。 # pymeshlab需要导入,其一般被命名为ml import pymeshlab as ml# 本案例所…

05.添加自定义触发器

添加自定义触发器 在系统中找到一个用户登录数量的监控项,用该监控项作为参考实例 测试监控项取值,2代表为登录系统终端数量 创建触发器 表达式设置条件,选择对应的监控项,根据对应的功能函数,在选择触发的结果 添…

简洁大气APP下载单页源码

源码介绍 简洁大气APP下载单页源码,源码由HTMLCSSJS组成,记事本打开源码文件可以进行内容文字之类的修改,双击html文件可以本地运行效果,也可以上传到服务器里面 效果截图 源码下载 简洁大气APP下载单页源码

Jenkins +配置邮件 centos8.5 安装部署 运维系列一

1 jenkins的war包下载地址: Download and deploy 2 xftp 等方式上传到服务器 #安装jdk tar zxvf jdk-11.0.8_linux-x64_bin.tar.gz mv jdk-11.0.8/ /usr/local/jdk vim /etc/profile export JAVA_HOME/usr/local/jdk export PATH$JAVA_HOME/bin:$PATH CLASSPATH.:$JAVA_…

中国居民消费新特征:中枢回落,即时满足,去地产化

随着收入预期和财富效应的转变,居民更倾向于通过短期集中式的消费来获得即时满足的快乐,服务消费表现出了更强的韧性。服务消费强于商品消费、消费去地产化、汽车挑大梁的特征延续。 特征一:消费倾向高于2020-22年,低于2017-19年…

传递给组件

React 组件使用 props 相互通信。每个父组件都可以通过为其子组件提供道具来将一些信息传递给子组件。Props 可能会让您想起 HTML 属性,但您可以通过它们传递任何 JavaScript 值,包括对象、数组和函数。 Props 是传递给 JSX 标签的信息。例如&#xff0…

libcity笔记:详细流程(以DeepMove为例)

1 主调用 python run_model.py --task traj_loc_pred --model DeepMove --dataset gowalla --batch_size5有task、dataset、model三个必须命令行参数batch_size一个可选命令行参数没有confg_file 1.1 libcity/utils/argument_list.py/str2bool 将字符串表示的布尔值转换为 Pyt…

结合kimi chat的爬虫实战思路

背景 想钻研一下项目组件,找找之后的学习方向。不能自以为是,所以借着网开源项目网站上公布的项目内容看一下,那些是我可以努力去学习的(入门的)。首先需要获取相关内容,于是爬取整理。 任务1&#xff1a…

操作系统实战(二)(linux+C语言)

实验内容 通过Linux 系统中管道通信机制,加深对于进程通信概念的理解,观察和体验并发进程间的通信和协作的效果 ,练习利用无名管道进行进程通信的编程和调试技术。 管道pipe是进程间通信最基本的一种机制,两个进程可以通过管道一个在管道一…

[Linux] git工具的安装和使用

目录 前言 安装 1.构建仓库 2.将仓库克隆到本地 使用 1.三板斧 1.git add 新增 2.git commit 提交 3.git push 推送 2.常用指令 前言 git 是一个代码托管平台,它的创始人是大名鼎鼎的 Linux 之父: 林纳斯托瓦兹,git的诞生可以使我们对…