一、问题提出

1、我们做web自动化一般就是增删改,验证基本功能流程。比如:添加一个用户,添加完了对比数据库字段,一致则案例通过。

2、举例:我们系统后台是用vue.js框架做的,现在在添加区域管理员的时候遇到了一模一样的input标签。如下图所示。

 

 

 

 

二、问题解决过程

1、这几个input标签是一模一样的,1个 div里面有1个 div和1个 label,div里面又有2个div和input,其中的1个div才有input。通过细心发现,和label同级的div也是一样的,但是label标签是根据for属性做了区分,比如:for="username",for="mobile"这下就好办了。可以先通过label定位到它的兄弟div,然后div里面只有一个input标签,所以直接定位这个input标签就好了。

最终的xpath如下:

//label[@for="username"]/following-sibling::div//input

在谷歌浏览器调试一下,OK

 

跳转:

 

 成功。

在pycharm里面发送一个AA试一下。、

代码:

  1.  
    #输入用户名
  2.  
    browser.find_element_by_xpath('//label[@for="username"]/following-sibling::div//input').send_keys("AA")

运行看看结果

大功告成!!!

2、分析如果遇到相同的标签,那么我们要看看它的兄弟是不是一样的,如果兄弟不一样,那就由兄弟去定位。

如果兄弟一样,那再上一层找爸爸。依次类推。

我们看看语法:

获取弟节点-following-sibling::

获取兄节点:preceding-sibling::

获取父节点以及混合应用:parent::

 

三、总结

元素定位是自动化测试的核心,而xpath能解决99%的定位问题,所以,掌握xpath编写,自动化测试成功80%。

有疑问一起留言交流!

 

2020年9月下午更新

现在又遇到相同的button。兄弟标签一样,爸爸也一样,爸爸的爸爸的爸爸。。。。

现在我们想定位下面这个button

思路:第一、通过class定位??我们看看

 

这边有一模一样的结构,不行

第二、看看这两个的div爸爸有啥不同,果然找到。不对,爸爸也是一样的,爸爸的爸爸也是一样的。。。

 

第三、慢慢向上查找,发现

这个div祖先不一样,所以通过这个可以确定下来这个button了

xpath:

//div[@aria-label="添加区域管理员"]//button[@class="el-button el-button--primary"]

调试

定位成功。

 

版权声明:本文为qq_29720657原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/qq_29720657/article/details/108337685
posted on 2022-05-26 22:13  无知小笨鸟  阅读(103)  评论(0编辑  收藏  举报