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

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

使用name属性定位

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

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

from selenium importwebdriver

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 importwebdriver

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 importwebdriver

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 importwebdriver

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 importwebdriver

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 importwebdriver

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 importwebdriver

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('测试一下')#输入测试一下

python selenium 元素定位_python3+selenium入门04-元素定位相关推荐

  1. python3 selenium 点击_python3 selenium使用

    其实这个就相当于模拟人的点击事件来连续的访问浏览器.如果你玩过王者荣耀的话在2016年一月份的版本里面就有一个bug. 安卓手机下载一个按键精灵就可以在冒险模式里面设置按键,让手机自动玩闯关,一局19 ...

  2. python表单切换_python3 selenium自动化 frame表单嵌套的切换方法

    在web自动化测试中,测试工程师经常会碰到frame表单嵌套结构,直接定位会报错,我们需要切换表单后才能成功定位. 我拿QQ邮箱登录来作为例子说下frame怎么切换. qq邮箱页面按F12可以看到以下 ...

  3. python控制qq群_Python3 selenium 实现QQ群接龙自动化功能

    一.环境 环境配置为安装了 selenium 模块的 Python3 ,以及浏览器对应的driver 如果没有安装 selenium ,可以在控制台执行下面的代码 pip3 install selen ...

  4. selenium firefox驱动_Python3+selenium配置常见报错解决方案

    第一个报错问题 'geckodriver' executable needs to be in PATH 1.1如果启动浏览器过程中报如下错误: Traceback (most recent call ...

  5. python元组元素删除_Python3基础 通过拆分元素 把元组的数据删除

    镇场诗: 诚听如来语,顿舍世间名与利.愿做地藏徒,广演是经阎浮提. 愿尽吾所学,成就一良心博客.愿诸后来人,重现智慧清净体. ------------------------------------- ...

  6. python输入是什么类型_python入门04——输入输出

    一.输入input python3中的input name=input("请输入你的用户名:") # name="egon" print(name,type(n ...

  7. python+selenium自动化(四)__八大元素定位之class_name、tag_name、partial_link_text、css_selector

    selenium八大元素定位(二) 上节讲了4种定位ID.NAME.LINK_TEXT.XPATH,这节继续学习剩下的4种元素定位方式 1.通过class_name定位 我们需定位上图中的" ...

  8. python中frame中的元素怎么识别_python3.6+selenium实现操作Frame中的页面元素

    有时网页中会嵌套一个或者多个Frame,此时我们直接去找嵌套在Frame里面的元素会抛出异常,所以在操作的时候我们需要将页面焦点切换到Frame里面,下面我们就以一个实例演示一下! 首先先创建三个ht ...

  9. python中frameset中的元素怎么识别_python3.6+selenium实现操作Frame中的页面元素

    有时网页中会嵌套一个或者多个Frame,此时我们直接去找嵌套在Frame里面的元素会抛出异常,所以在操作的时候我们需要将页面焦点切换到Frame里面,下面我们就以一个实例演示一下! 首先先创建三个ht ...

最新文章

  1. SSH框架第一天——hibernate框架
  2. 操作系统文件分配策略_操作系统中的文件分配方法
  3. Myeclipse8.5 反编译插件 jad 安装(转)
  4. 从程序员到项目经理(9):程序员加油站 -- 再牛也要合群【转载】
  5. Future机制原理
  6. 百度网页注册HTML代码
  7. 数据中心建筑及装修施工工序工艺管理要点
  8. 08-CSS属性:定位属性
  9. 根据体重和身高获取BMI值
  10. 手机app开发用的是什么语言?有哪些优势?
  11. 常见内网穿透-花生壳、神卓互联、FRP、ngork分析
  12. 现代信号处理——平稳随机信号的功率谱密度
  13. python小组项目总结报告_项目总结报告范文78922
  14. vue2.x的h函数(createElement)与vue3中的h函数
  15. Hexo 发布博客实现图文并茂
  16. 基于JAVA的TCP网络QQ聊天工具系统
  17. 安装mathtype时找不到文件mathpage.wil
  18. WPF真入门教程20--数据排序
  19. Flutter开发之Http网络请求
  20. 小光棍数(同余定理)

热门文章

  1. PC机键盘的处理过程
  2. 编译Android 4.0 ICS注意事项
  3. 杀戮时刻补丁(无限子弹,无限手雷)
  4. 大型企业网络配置系列课程详解(三)--OSPF高级配置与相关概念的理解
  5. 字母全排列快速算法C代码
  6. vue中的mixins怎么用?
  7. vue——组件之elementTable组件再封装
  8. 《代码大全2》读书笔记 Week2
  9. 使用Node.js+Socket.IO搭建WebSocket实时应用
  10. android 应用内部组织关系