python selenium系列(八)元素定位进阶之分层定位

作者:平山

http://blog.51cto.com/2681882/2293873

一 前言

在前面的Selenium系列文章中,已经介绍过元素定位的方法,也强调过元素定位对自动化操作的重要性。本节将介绍一种分层定位思想,该思想主要用于解决目标元素无法直接定位的场景。

现在想象这样一个场景:朋友请你去KFC吃炸鸡汉堡, 而KFC在城市的各个区都有的,所以你要先确定是哪个区哪个街道的KFC,根据位置属性从大到小逐级查找,这是符合逻辑的查找思路。在这个场景里,因目标属性相同(KFC不仅名字相同,风格也是统一的),所以不能直接根据最直观的名称属性查找(存在相同)。在Web UI的世界里,也存在类似情况,目标元素很可能属性是完全相同的,无法直接定位或者定位到的并不是目标元素。此时,可以利用现实世界的思维,先找目标元素的父级元素,再沿着确定的父级元素寻找下级的目标元素。

简言之,分层定位的思想是:先定位父元素,然后再根据父元素遍历其子元素,选择需要的目标元素。

二 分层定位思想的应用场景

分层定位思想主要应用在如下场景:

1、 子级元素无法直接定位,需要先操作父级元素(如二级菜单是在一级菜单点击后才出现);

2、 同一级别的元素属性相同,无法定位到唯一、确定的元素;

3、 定位某个元素下的所有子元素;

接下来,我们使用一个例子进行说明,重点是体会这种思想。

三 分层定位思想实战

假如我们有如下待测页面,其中菜单一菜单二有相同的二级子菜单,两者的子菜单属性完全一致,现在需要对菜单一下的二级菜单B进行操作,因两个菜单都包含有相同属性的二级菜单B,所以不能直接定位,另外,该二级菜单也需要在操作一级菜单后才能进行操作。所以,操作思路是先选中一级菜单,再选择其目标二级菜单进行操作。

实例html页面主要源码如下:

Python代码如下:

看完本文有收获?请转发分享给更多人

关注 【小蟒社区】,一起学Python

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20181005G0EC2L00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

扫码关注云+社区

领取腾讯云代金券