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

python3+selenium入门04-元素定位

我们在对浏览界面做操作时,比如点击按钮,搜索框输入内容。都需要把鼠标挪过去,然后再点击,或者输入内容。在selenium操作时也是一样的。需要先对元素进行定位,然后才能进行操作。可以借助浏览器的开发者工具(浏览器F12打开)来查看网页对应的html代码。然后进行定位。可以稍微学习HTML基础,更容易理解。

定位方式有八种,这八种各有两个方法,一个是find_element_by_方式,这是定位单个元素的。一个是find_elements_by_方式,这是用来定位多个元素的。

 

使用name属性定位

打开谷歌浏览器,打开百度首页,F12呼出开发者工具

使用左边这个按钮,点击百度搜索框,会自动显示对应HTML代码,可以看到name=‘wd’

from selenium import webdriver

dr = webdriver.Chrome()#初始化chrome浏览器实例
dr.maximize_window()#浏览器最大化
dr.get('https://www.baidu.com')#打开百度首页
test = dr.find_element_by_name('wd')#通过name属性定位输入框
test.send_keys('测试一下')#输入测试一下

 

 

使用id属性定位

还是以上面百度搜索框为例,id=‘kw’

from selenium import webdriver

dr = webdriver.Chrome()#初始化chrome浏览器实例
dr.maximize_window()#浏览器最大化
dr.get('https://www.baidu.com')#打开百度首页
test = dr.find_element_by_id('kw')#通过id属性定位输入框
test.send_keys('测试一下')#输入测试一下

通过id和name是比较常用和容易的定位方式。因为一般id和name元素在一个HTML文件中基本是唯一的。不过有时候前端开发也可能不写这两个属性。

 

 

使用class定位

还是使用百度搜索框,class='s_ipt'

from selenium import webdriver

dr = webdriver.Chrome()#初始化chrome浏览器实例
dr.maximize_window()#浏览器最大化
dr.get('https://www.baidu.com')#打开百度首页
test = dr.find_element_by_class_name('s_ipt')#通过classname属性定位输入框
test.send_keys('测试一下')#输入测试一下

 

 

使用tagname定位

tagname其实就是HTML的标签。不过一个HTML文件里面相同的标签肯定很多,一般很少用到。基本都是定位父元素,然后父元素定位下面所有tagname元素。再根绝其他条件去操作。比如表格啥的。

 

 

使用link_text定位

这是用来定位文字超链接的,可以通过文字链接部分的文字描述,定位百度首页上的新闻按钮

from selenium import webdriver

dr = webdriver.Chrome()#初始化chrome浏览器实例
dr.maximize_window()#浏览器最大化
dr.get('https://www.baidu.com')#打开百度首页
test = dr.find_element_by_link_text('新闻')#通过link_text定位新闻跳转按钮
test.click()#点击按钮

 

 

使用partial_link_text定位

这个也是用来定位文字超链接的,和link_text区别在于,这个相当于模糊搜索,只输入部分文字描述就可以了

from selenium import webdriver

dr = webdriver.Chrome()#初始化chrome浏览器实例
dr.maximize_window()#浏览器最大化
dr.get('https://www.baidu.com')#打开百度首页
test = dr.find_element_by_partial_link_text('')#通过partial_link_text定位新闻跳转按钮
test.click()#点击按钮

 

 

使用xpath定位

这个百分百可以定位到,通过层级来的,感兴趣可以学习下xpath的语法,不会也没关系。还是以百度搜索框为例

对着直接右键copy-copy xpath

from selenium import webdriver

dr = webdriver.Chrome()#初始化chrome浏览器实例
dr.maximize_window()#浏览器最大化
dr.get('https://www.baidu.com')#打开百度首页
test = dr.find_element_by_xpath('//*[@id="kw"]')#通过xpath定位搜索框
test.send_keys('测试一下')#输入测试一下

 

 

 

使用css定位

和xpath一样,拷贝的时候选上面的copy-selector就行

from selenium import webdriver

dr = webdriver.Chrome()#初始化chrome浏览器实例
dr.maximize_window()#浏览器最大化
dr.get('https://www.baidu.com')#打开百度首页
test = dr.find_element_by_css_selector('#kw')#通过xpath定位搜索框
test.send_keys('测试一下')#输入测试一下

转载于:https://www.cnblogs.com/myal/p/9337367.html

相关文章:

  • RocketMQ概述
  • Go 语言的垃圾回收演化历程:垃圾回收和运行时问题
  • 第八课-第一讲 08_01_facl及用户及Linux终端
  • python学习日记2
  • Hybrid App 开发实践总结
  • 小飞机工作笔记(二)追帧与快照同步
  • 配置 SSH 端口转发,并设置开机启动
  • JavaScript 笔记02
  • 四个措施打造安全的DevOps流程
  • WMI-Win32_PhysicalMemory 内存条参数
  • 天猫国潮行动:卡萨帝F+冰箱成高端主推产品
  • 常常忘记但是很重要的sql语句
  • 最完整的经纬度正则表达式
  • 数值优化(三)
  • 安装Windows10系统注意事项
  • 网络传输文件的问题
  • [译]如何构建服务器端web组件,为何要构建?
  • 【划重点】MySQL技术内幕:InnoDB存储引擎
  • Android Volley源码解析
  • C++回声服务器_9-epoll边缘触发模式版本服务器
  • Computed property XXX was assigned to but it has no setter
  • Druid 在有赞的实践
  • FineReport中如何实现自动滚屏效果
  • Gradle 5.0 正式版发布
  • Java-详解HashMap
  • js学习笔记
  • miaov-React 最佳入门
  • vue数据传递--我有特殊的实现技巧
  • Webpack 4x 之路 ( 四 )
  • 程序员该如何有效的找工作?
  • 创建一个Struts2项目maven 方式
  • 名企6年Java程序员的工作总结,写给在迷茫中的你!
  • 怎么将电脑中的声音录制成WAV格式
  • 京东物流联手山西图灵打造智能供应链,让阅读更有趣 ...
  • 如何用纯 CSS 创作一个菱形 loader 动画
  • ​ 无限可能性的探索:Amazon Lightsail轻量应用服务器引领数字化时代创新发展
  • ​linux启动进程的方式
  • (02)Hive SQL编译成MapReduce任务的过程
  • (AngularJS)Angular 控制器之间通信初探
  • (附源码)计算机毕业设计SSM疫情社区管理系统
  • (三)模仿学习-Action数据的模仿
  • (五)Python 垃圾回收机制
  • ./indexer: error while loading shared libraries: libmysqlclient.so.18: cannot open shared object fil
  • .NET “底层”异步编程模式——异步编程模型(Asynchronous Programming Model,APM)...
  • .NET Compact Framework 多线程环境下的UI异步刷新
  • .Net core 6.0 升8.0
  • .NET delegate 委托 、 Event 事件,接口回调
  • .NET WebClient 类下载部分文件会错误?可能是解压缩的锅
  • .net 使用$.ajax实现从前台调用后台方法(包含静态方法和非静态方法调用)
  • .NET 依赖注入和配置系统
  • .NET/C# 在代码中测量代码执行耗时的建议(比较系统性能计数器和系统时间)...
  • .NET开源全面方便的第三方登录组件集合 - MrHuo.OAuth
  • .skip() 和 .only() 的使用
  • @autowired注解作用_Spring Boot进阶教程——注解大全(建议收藏!)
  • @ModelAttribute 注解