测试小白的心酸路之Python+Selenium元素的定位详解(一)

世界上最远的距离大概就是明明看到一个页面元素站在那里,但是我却定位不到!!!
我们在做WEB自动化时,最根本的就是操作页面上的元素,首先我们要能找到这些元素,然后才能操作这些元素。工具或代码无法像我们测试人员一样用肉眼来分辨页面上的元素,那么我们该怎么来定位它们呢?
selenium定位元素的方法有很多种,但宗旨只有一个,那就是能快速便捷的查找到唯一的元素,以及后期的方便维护,像是通过id、name、class_name、tag_name、link_text等等,但是这些方法局限性太大,拿id属性来说,首先一定不会每个元素都有id属性,其次元素的id属性也不一定是固定不变的。所以这些方法了解一下即可,我们真正需要熟练掌握的是通过xpath和css定位,一般只要掌握一种就可以应对大部分定位工作了。

-----------------------------分割线---------------------------------------------------------------------------------------
首先我先简单介绍一下其他定位方法:
1.打开google浏览器,进入百度网页,按F12进入开发者模式,如下图:
在这里插入图片描述

2.用鼠标点击下图红色框中的箭头——然后鼠标移动到web页面的元素上(此处为百度框),会自动定位到对应的html代码,如下图:
在这里插入图片描述

3.通过元素存在的id、name、class属性来定位(id属性是唯一的,name,class有可能一个页面多个属性是相同的)
在这里插入图片描述

driver.find_element_by_id(“kw”)
driver.find_element_by_name(“wd”)
driver.find_element_by_class_name(“s_ipt”)

在这里插入图片描述

ps:通过元素的name属性来定位元素,name属性不是绝对唯一的(一个页面内可能存在多个元素的name属性是相同的)
1)如果name属性的值‘kw’是唯一的,用find_element_by_name定位元素,返回值是一个值
2)如果name属性的值‘kw‘不是唯一的,用find_elements_by_name定位元素,返回符合条件的多个值,保存在列表中,即返回的是列表
4. 通过元素的标签名tag来定位元素,标签名不是绝对唯一的(一个页面内可能存在多个相同的标签名)
如果标签名是唯一的,用find_element_by_tag_name定位元素,返回值是一个值
driver.find_element_by_tag_name(“input”)

如果学过HTML知识,我们就知道HTML是通过tag来定义功能的,比如input是输入,table是表格等等。每个元素其实就是一个tag,一个tag往往用来定义一类功能,我们查看百度首页的html代码,可以看到有很多

,, 等tag,所以很难通过tag去区分不同的元素。基本上在我们工作中用不到这种定位方法。
在这里插入图片描述

5. 通过链接元素的文本内容来精确匹配和模糊匹配定位元素,不是绝对唯一的(一个页面内可能存在多个链接元素的文本内容是相同的)
1)精确匹配——文本内容为“新闻”
如果文本内容是唯一的,用find_element_by_link_text定位元素,返回值是一个值
driver.find_element_by_link_text(“新闻”)
2)模糊匹配——通过文本内容的部分内容,例如“hao123”,通过“hao”定位
如果文本内容是唯一的,用find_element_by_partial_link_text定位元素,返回值是一个值
driver.find_element_by_partial_link_text(“hao”)

![在这里插入图片描述](https://img-blog.csdnimg.cn/752488855d7d4079872b4c1471d9da7b.png?x-oss-process=image/watermark,type_ZHJvaWRzYW5zZmFsbGJhY2s,shadow_50,text_Q1NETiBA5bCP55m96I-c5ZGA5ZGA,size_16,color_FFFFFF,t_70,g_se,x_16)

在这里插入图片描述

后续文章再着重介绍下通过css和xpath元素的定位方法。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值