selenium定位web元素的方法(三)Tag

1分钟了解一个测开小知识:

selenium定位web元素的方法(三)Tag:

咱们先看下Tag,在HTML里是哪一部分

每个tag代表着不同的意思,先不考虑含义,但是能知道的是,每个段落都包含并且可能不一致。

对于需要批处理的数据,一般有tag。例如:捕捉表单下的每个数据、验证统计表正确性、等等,需要对多个数据进行操作。使用Xpath就很麻烦,需要逐个定位元素,然后取。
演示一下:

测试场景是,或者这个表单下的数据,如果数值为2,则返回对应的名称。
如果使用Xpath,每行数据都需要定位2条Xpath信息,
一条是名称的xpath://*[@id="instances"]/tbody/tr[15]/td[1]/b
一条是数值的xpath://*[@id="instances"]/tbody/tr[15]/td[3]
列表有多少行数据,就需要定位多少行,为了把体力活变成脑力活。就需要引用tag。

Tag使用的方式比Xpath定位多一个找父节点的操作。
从html结构看,就是找能够判断出来的上级

通过html结构,找到上级节点。由于一般获取的是表单,即找到tag名称为:table的节点
代码如下:table = driver.find_element_by_Xpath('//*[@id="instances"]')

然后再父节点下,寻找所需要数据的tag名称

找到行的tag:tr;列的tag:td
行的代码:lines = table.find_elements_by_tag_name('tr')
注意,这里不再使用driver、而是使用table,理解为,将定位数据的范围限制在列表下
最后捕捉列数据:
lists = lines[0].find_elements_by_tag_name('td')

最后获取名称数据:
name = lists[0].text
获取数量内容:
number = lists[2].text

 部分源码:

        table = driver.find_element_by_xpath('//*[@id="instances"]') # 捕捉父节点,即表单
        lines = table.find_elements_by_tag_name('tr')  # 根据表单找到所有行
        for num, data in enumerate(lines):   # 添加循环,遍历所有找到的行
            lists = lines[num].find_elements_by_tag_name('td')  # 每行中找到所有列的数据
            name = lists[0].text # 第一列是名称列,捕捉名称列的描述信息
            number = lists[2].text  # 第三列是数量列,捕捉数量列的描述信息
            print(name, number) # 输出名称,数据

输出的内容举例:
MSP-GATEWAY	 (1)	
MSP-MASTER	(1)	
MSP-MONITOR-UI	 (1)	
MSP-REGISTRY	 (1)	

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值