大型情感剧集Selenium:3_元素定位

大型情感剧集Selenium:4_老中医教你(单/多/下拉框)选项定位 #华为云·寻找黑马程序员# 又要开篇叨叨 昨天没有更新,但因为下大雨没撸串,陪孩子玩了下前一天写的Flask开发猜数字小游戏—聪明的奥特曼,发现代码有些bug,进行了修改,另外只是名字叫聪明的奥特曼,我的俩爷不买账啊,没办法,将成功的alert改为展示奥特曼的图片,才把他俩打发。至于做对?别逗了,我都改成猜1-4了都各种错,就急着点完了看奥特曼,真是气死我了… 今天讲什么 讲什么标题说了,讲selenium的单选、多选、下拉... 阅读详情
关于昨天的文章

今天有朋友反馈,代码运行的时候,selenium提示警告

DeprecationWarning: use options instead of chrome_options
driver = webdriver.Chrome(chrome_options=options)

本来以为是我的selenium版本太低了,可以上官网看到3.141.0是最新版本啊,最后把python从3.6.8升级到3.7.3才复现了此问题。虽然这个告警不影响使用,但既然官方提示了修改就看看呗,其实很简单:

# 将原本的chrome_options
driver = webdriver.Chrome(chrome_options=options)
# 改为options 即可
driver = webdriver.Chrome(options=options)
# 另外,针对以下引用
from selenium.webdriver.chrome.options import Options
options = Options()
# 可以简写为:
options = webdriver.ChromeOptions()
今天说什么

今天肯定说元素定位啊,再不说都要取关了...可应该怎么说呢?
话说,selenium1.0起初它使用了基于Javascript的自动化引擎,而浏览器对 Javascript 又有很多安全限制,之后后通过webdrvier进行了各浏览器的协议封装。那么说到底,我们通过selenium变相的完成了js的的相关操作,比如:


5847426-aca0f1ef47a75e49.png
selenium元素定位方法

再来看看js的dom对象:


5847426-b20e7d524ee4e92c.png
js的dom对象

selenium将JavaScript的HTML DOM进行了封装处理,最终提供给我们进行使用。引申出三点:

  1. 开发转测试,真的是有优势的
  2. 作为一个合格的测试,抽时间学学html css 和js 也是对自己能力的提升
  3. 爬虫熟识的html解析库Beautifulsoup4,元素的定位上用法也类似以上两者,一通百通!
selenium元素定位

WebDriver提供了一系列的定位符以便使用元素定位方法。常见的定位符有以下几种:

  • id
  • class name
  • name
  • tag
  • link text
  • partial link text
  • xpath
  • css selector

而针对元素定位,selenium又分为find_element_by和find_elements_by。即找到一个元素和找到所有元素。
针对find_elements_by,我们又可以针对找到的元素,我们又可以像python操作list一样进行切片,筛选等操作。
我们以百度为例,介绍以上方法:

方法Method描述Description参数Argument示例Example
id该方法通过ID的属性值去定位查找单个元素id: 需要被查找的元素的IDfind_element_by_id('kw')
class name该方法通过class的名称值去定位查找单个元素class_name: 需要被查找的元素的类名find_element_by_class_name('s_ipt')
name该方法通过name的属性值去定位查找单个元素name: 需要被查找的元素的名称find_element_by_name('wd')
tag_name该方法通过tag的名称值去定位查找单个元素tag: 需要被查找的元素的标签名称find_element_by_tag_name('input')
link_text该方法通过链接文字去定位查找单个元素link_text: 需要被查找的元素的链接文字find_element_by_link_text('百度一下')
partial_link_text该方法通过部分链接文字去定位查找单个元素link_text: 需要被查找的元素的部分链接文字find_element_by_partial_link_text('百度')
css_selector该方法通过CSS选择器去定位查找单个元素css_selector: 需要被查找的元素的IDfind_element_by_css_selector('#su')
xpath该方法通过XPath的值去定位查找单个元素xpath: 需要被查找的元素的xpathfind_element_by_xpath('//*[@id="su"]')

下来我们用代码针对百度进行演示

# -*- coding: utf-8 -*-
# @Author   : 王翔
# @JianShu  : 清风Python
# @Date     : 2019/6/19 21:40
# @Software : PyCharm
# @version  :Python 3.7.3
# @File     : Day_3.1_chrome_option_warning.py
from selenium import webdriver
import time

options = webdriver.ChromeOptions()
options.add_argument('window-size=800,600')
options.add_argument('disable-infobars')
driver = webdriver.Chrome(options=options)

driver.get("http://www.baidu.com")

# link_text 定位
driver.find_element_by_link_text('新闻').click()
time.sleep(1)
driver.back()

# id 定位
driver.find_element_by_id("kw").send_keys("id 定位|")
time.sleep(1)

# class name 定位
driver.find_element_by_class_name("s_ipt").send_keys("class name 定位|")
time.sleep(1)

# name 定位
driver.find_element_by_name("wd").send_keys("name 定位|")
time.sleep(1)

# css 定位
driver.find_element_by_css_selector("#kw").send_keys("css 定位|")
time.sleep(1)

# xpath 定位
driver.find_element_by_xpath("//input[@id='kw']").send_keys(" xpath 定位|")
time.sleep(1)

driver.quit()

效果如下:


5847426-edeb7d3536c04ba2.gif
几种定位方法演示
To Be Continue

今天的内容就到这里,如果觉得有帮助,欢迎将文章或者我的公众号【清风Python】分享给更多喜欢python的人

stm32f407VET6 系统学习 day01 GPIO 配置 stm32f407VET6 系统学习 day01 GPIO 配置 LED 蜂鸣器 按键的不讲了,之前讲过了 阅读详情

相关推荐

昆仑通态屏幕制作(连载1)---接触篇

写在开始 背景:最近出了做QT、LORA和4G,还做了一个屏幕。以前做了一个迪文的串口屏幕,发现网上的教程很多,所以连载就不更新了,并且迪文屏幕的设置什么的比较简单,应该从网上都能找到对应的教程。而现在用的昆仑通态的屏幕属于嵌入式屏幕,至于为啥叫嵌入式,也不是很明白,反正就是需要用这个屏幕,嵌入式不嵌入式不重要了。重要的是能用,并且能实现串口屏幕不能实现的功能。所以选定昆仑通态的一款屏幕。 文章语言:我比较习惯用比较糙的语言介绍做的东西,有时候不太准备,但是为了方便理解,还请大家谅解。用...

weixin_45426095的博客 6736

关于 pywintypes.com.error 错误的解决办法记录

pywintypes.com.error

qq_35597285的博客 3870

MEG预处理-Brainstorm

Brainstorm下载和安装 去Brainstorm官网进行下载:打开网页后,点击左侧Download;在跳出来的界面中进行简单的注册,注册完成后可以进行下载 解压后得到“brainstorm3”的文件夹,里面包含Brainstorm工具包的所有文件,把这个文件夹放在某个路径如"E:\matlab_tools\brainstorm3"即可 同样在某个路径建立空的文件夹命名为:brainstorm_db用于工具包运行过程中自动存储生成的文件,所以这个文件中生成的数据不要手动移动删除 在Matlab中,把.

AxeChen的博客 6124

System.Exception: CryptUnprotectData: Win32 错误:-2146893813...待解决

<br />之前从台式机上导出一份数据库注册列表,在导入到另一台机子后,有部分连接不能正常使用,提示如题错误;网上搜索了一下,解决办法为删除注册重新注册后就OK。不过问题的原因,作者似乎没有解释清楚。继续求解......<br />原址:http://www.mzwu.com/article.asp?id=2514

tebbic的专栏 1440

3D医学影像分割实战:从数据预处理到模型训练全流程解析

本文详细解析了3D医学影像分割的全流程,从数据预处理到模型训练,重点介绍了nnUNet框架的应用技巧。通过实战案例,帮助开发者掌握如何处理复杂的.nii.gz文件格式、优化数据预处理流程以及高效训练3D分割模型,特别适合医学影像分析领域的从业者参考。

weixin_29098367的博客 222

S.BUS协议及编解码,C语言源码

1、简介 SBUS本质是一种串口通信协议,采用100K的波特率,8位数据位,两位停止位,偶效验,即8E2的串口通信。 值得注意的有三点: 1.SBUS采用负逻辑,所以无论接收还是发送都要进行硬件取反(注意,一定要硬件取反),电路如下 这是我在网上看资料时看到的电路,实际上我用的是下面这个电路 2.SBUS有两种模式, a.高速模式:每4ms发送一次 b...

qq_31232793的博客 1万+

ispostback

当页面初始化时动态的在后台添加服务器控件,若要在页面另外控件触发事件中读取动态添加的控件时,就会出现读取不到得现象。绑定后,datatable中的数据,若要某一行不显示,方法:datarow.delete(),使得该行rowstate为Deleted。

tebbic的专栏 508

Android Studio运行报错: failed to load include path ……\platforms\android-35\android.jar的最细解决方案

【代码】Android Studio运行报错: failed to load include path ……\platforms\android-35\android.jar的最细解决方案。

2401_86789230的博客 2万+

大型情感剧集Selenium:7_使用selenium,让整个简书网站都认识我! #华为云·寻找黑马程序员#

安静的学习,真好 媳妇儿带着孩子去旅游,终于可以一个人听着陶喆的歌学习、写博客了,这感觉真好!(明天我媳妇儿看到文章,又要…) 今天早上收到了份哭笑不得的鼓励,一位朋友说我真勤劳,每天早上早起看一篇python文章,然后还发到朋友圈。 写公众号一个月了,每天早上朋友圈转发一下文章,算是我最大的推广了,然后被认为是我读别人的文章。 好吧,那我读文章的时候,比这个写文章的人时间不落分毫,哈哈。 说说s...

SlaughterDevil的博客 561

Apache Hop集成Spring Boot实战:从配置到执行HPL文件

本文详细介绍了将Apache Hop集成到Spring Boot应用中的完整实战方案。通过配置核心依赖、初始化Hop环境、编写服务层逻辑,实现了在Java应用中程序化执行HPL管道文件,从而将可视化ETL能力无缝嵌入微服务架构,提升数据处理的自动化与可维护性。

blue42的博客 476

R语言环境下Bibliometrix与Biblioshiny的安装与配置指南

本文提供了在R语言环境下安装与配置Bibliometrix和Biblioshiny的详细指南。内容涵盖R与RStudio的安装、Bibliometrix包的安装避坑方法,以及如何启动Biblioshiny图形界面进行文献计量分析。重点解决了安装过程中的常见网络与依赖问题,帮助科研人员快速搭建高效的文献分析环境。

jwt8token的博客 1146

python处理 pywintypes.error 异常

我的原答案见: https://stackoverflow.com/questions/25053785/how-to-catch-these-exceptions-individually/60075942#60075942 之前使用有关win32的库时,有时候会出现pywintypes.error异常,但我看的各种异常里面并没有看到pywintypes.error的异常。 今天调试了一下: 发...

1万+

TC397 EB MCAL开发从0开始系列 之 [13.1] Dma配置实战 -实现M2M数据传输(读存储写存储)

TC3XX TC397 MCAL DMA 从0搭建测试用例-实现M2M 存储到存储数据传输

yy九歌的博客 1914

大型情感剧集Selenium:3_元素定位 #华为云·寻找黑马程序员#

关于昨天的文章 今天有朋友反馈,代码运行的时候,selenium提示警告 DeprecationWarning: use options instead of chrome_options driver = webdriver.Chrome(chrome_options=options) 本来以为是我的selenium版本太低了,可以上官网看到3.141.0是最新版本啊,最后把pyth...

华为云官方博客 3450

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

大型情感剧集Selenium:9_selenium配合Pillow完成浏览器局部截图

网页截图 上次提到了selenium的四种截图方法,最终截图了整张网页。但很多时候,我们仅仅需要截图部分的内容。比如截取某个关键信息,或者现在已经不常见的截图验证码(现在都是各种按规则点击…)。那么我们该如何进行部分元素的截图呢?今天我们就来举个例子… 昨天51test的小编联系,说希望我能给网站投稿关于测试的帖子,要求与测试相关且文章篇幅在1000字以上。 我立马翻了下简书首页,54篇文章5....

华为云官方博客 2318

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

大型情感剧集Selenium:5_alert窗口与iframe框架定位

有种感觉 有种感觉,是否应该尽快结束这个selenium的情感剧。因为自从开始写这个系列的文章,阅读量就好少好少。虽说是学习总结,但码字比学习更费时间,写完了还没人看,心塞。 今日要闻 今天和大家说说alert与iframe框架早selenium定位中,存在的问题吧。 很多网站,一些功能还在使用简陋的alert进行弹窗确认操作。但是selenium如何可以定位到js弹窗的内容呢?之...

清风Python 246

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

大型情感剧集Selenium:7_使用selenium,让整个简书网站都认识我!

安静的学习,真好 媳妇儿带着孩子去旅游,终于可以一个人听着陶喆的歌学习、写博客了,这感觉真好!(明天我媳妇儿看到文章,又要...) 今天早上收到了一份哭笑不得的鼓励,一位朋友说我真勤劳,每天早上早起看一篇python文章,然后还发到朋友圈。 写公众号一个月了,每天早上朋友圈转发一下文章,算是我最大的推广了,然后被认为是我读别人的文章。 好吧,那我读文章的时候,比这个写文章的人时间不...

清风Python 333

大型情感剧集Selenium:2_options设置

selenium从入门到放弃 今天用一张朋友圈截图开篇吧... 依然被嘲讽.jpg 不出所料与果不其然...又被嘲讽了啊,这个流汗的表情暴击一万点伤害。 每天在嘲讽中学习,我感觉可以写一本辛酸泪的书了,名字叫【公众号,从发文到放弃】,哈哈! 其实这种针对个别群体的文章,远不如娱乐性质的python文章来的有吸引力。 就好比我隔壁工位的盆友,今天说“你总是夜里发文章,早...

清风Python 519

大型情感剧集Selenium:5_alert窗口与iframe框架定位 #华为云·寻找黑马程序员#

有种感觉 有种感觉,是否应该尽快结束这个selenium的情感剧。因为自从开始写这个系列的文章,阅读量就好少好少。虽说是学习总结,但码字比学习更费时间,写完了还没人看,心塞。 今日要闻 今天和大家说说alert与iframe框架早selenium定位中,存在的问题吧。 很多网站,一些功能还在使用简陋的alert进行弹窗确认操作。但是selenium如何可以定位到js弹窗的内容呢?之前说到的那些id...

SlaughterDevil的博客 258

大型情感剧集Selenium:4_老中医教你(单/多/下拉框)选项定位

又要开篇叨叨 昨天没有更新,但因为下大雨没撸串,陪孩子玩了下前一天写的Flask开发猜数字小游戏---聪明的奥特曼,发现代码有些bug,进行了修改,另外只是名字叫聪明的奥特曼,我的俩爷不买账啊,没办法,将成功的alert改为展示奥特曼的图片,才把他俩打发。至于做对?别逗了,我都改成猜1-4了都各种错,就急着点完了看奥特曼,真是气死我了..... 今天讲什么 讲什么标题说了,讲sel...

清风Python 339

大型情感剧集Selenium:4_老中医教你(单/多/下拉框)选项定位 #华为云·寻找黑马程序员#

今天讲什么 讲什么标题说了,讲selenium的单选、多选、下拉框选项定位。但其实这东西,没什么太多说的,又比较枯燥,那该怎么让这一集selenium的课程变得有趣呢?有请老中医,哈哈… 怎么样,这个野广告做的还不错吧,你们给多少分?至于为什么要自己写一个html的页面,一是懒得找什么网页又有下来框体,又有单/多选。二是最近更多的想练习写一些web界面,最重要的是怕大家觉得selenium系列的...

华为云官方博客 3580

大型情感剧集Selenium:2_options设置 #华为云·寻找黑马程序员#

上集回顾 昨天说简单介绍了什么是selenium,它能干what,和发展史与梗概。当的是python如何通过pip安装selenium,并下载对应浏览器的webdriver。 最后简单通过一个Demo描述了下如何导入selenium模块,并通过webdriver打开浏览器(我用的chrome),访问我的简书… 今日内容 按照大纲来说,今天该讲selenium的几种对象定位方法了。但我按照套...

华为云官方博客 3472
上一篇: 大型情感剧集Selenium:2_options设置
下一篇: Flask开发猜数字小游戏---聪明的奥特曼
清风Python
博客等级 码龄7年 406粉丝 267原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值