Web自动化测试实战2—定位元素的八种方式

Webdriver提供了八种基本元素定位的方法:

方法用法特性
idfind_element_by_id()元素id具有唯一性
namefind_element_by_name()元素名称,可以不唯一,需要通过层级和属性结合或者二次定位
class namefind_element_by_class_name()元素类名,用法与id,name类似,通过class属性来定位元素
tag namefind_element_by_tag_name()<form>,<span>,<input>等都是标签
link textfind_element_by_link_text()专门用来定位文本链接
partial link textfind_element_by_partial_link_text()取文本链接的部分进行定位,只要能唯一标识元素即可
xpathfind_element_by_xpath()基于XML层级结构关系来定位,此方式运用最普遍
css selectorfind_element_by_css_selector()主要通过class属性和id属性进行定位

1)id定位元素
  使用id定位元素虽然高效,但是在实际测试项目中能直接通过id来进行定位的元素比较少,以百度一下输入框为例,id=“kw”。

<input id="kw" class="s_ipt" autocomplete="off" maxlength="255" value="" name="wd"/>

id定位元素实例

from selenium import webdriver

driver = webdriver.Chrome()
driver.maximize_window()
 
driver.get("https://www.baidu.com")
try:
    driver.find_element_by_id("kw")
    print ('test pass: ID found')  
except Exception as e:
    print ("Exception found", format(e))
 
driver.quit()

2)name定位元素
  name这个属性值不是所有的元素都有,所以使用不普遍,但是如果有name,建议可以采用这个属性值进行定位。

<input id="kw" class="s_ipt" autocomplete="off" maxlength="255" value="" name="wd"/>

name定位元素实例

driver.find_element_by_name("wd")  # 百度一下输入框name = 'wd'

3)class name定位元素

<input id="kw" class="s_ipt" autocomplete="off" maxlength="255" value="" name="wd"/>

class name定位元素实例

driver. find_element_by_class_name("s_ipt")  # 百度一下输入框class name = 's_ipt'

4)tag name定位元素
  图中红色标记部分的标签名称就是tag name,由图我们可以看到,我们的目标元素是百度一下输入框,也就是input这个tag name,但是由于tag name="input"的元素很多,并不能准确定位到百度一下输入框,所以我们只能扩大节点参照,选择上面的form来作为tag name,这也就是这种定位方式的弊端。
在这里插入图片描述
tag name定位元素实例

driver.find_element_by_tag_name("form")

5)link text定位元素
  网页中可以点击跳转的链接,上面的文字信息就是link text,例如百度一下页面新闻,学术等文字:
在这里插入图片描述
link text定位元素实例

driver.find_element_by_link_text("学术") #定位的是link text="学术"的元素

6)partial link text定位元素
  partial link text定位方式和link text类似,只是当链接文字过长,同时链接中部分文字就可唯一定位元素时,就可以使用partial link text方法来替代link text方法定位元素,这里就不过多的举例。
7)xpath定位元素
  xpath即为XML路径语言(XML Path Language),它是一种用来确定XML文档中某部分位置的语言。对于xpath还在学习的过程中,主要是通过在火狐浏览器中安装firepath插件,可以快速获取网页元素的xpath表达式,具体步骤如下图所示,操作前需点击电脑的F12按钮进入firebug操作界面。
在这里插入图片描述
xpath定位元素实例

driver.find_element_by_xpath(".//*[@id='kw']") #定位的是xpath表达式=".//*[@id='kw']"的元素

8)css selector定位元素
  css selector定位元素需要对css比较熟,这种定位元素的方式比xpath表达式查找元素的速度要快,用css selector也可以定位到页面大多数的元素。
css selector定位元素实例

driver.find_element_by_css_selector("#kw")#定位的是id="kw"的元素,用css语法中,id元素前面需要加#号

  本章主要介绍了Webdriver定位元素的八种方法,其中最常用的就是后面两种xpath和css selector定位元素方式。需要注意的是:一定要掌握xpath或者css selector方法来定位元素,其他几种定位方法只需了解即可。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值