iis服务器助手广告广告
返回顶部
首页 > 资讯 > 后端开发 > Python >python+selenium-元素定位
  • 268
分享到

python+selenium-元素定位

元素pythonselenium 2023-01-30 22:01:28 268人浏览 独家记忆

Python 官方文档:入门教程 => 点击学习

摘要

  最近在学习WEB自动化测试,web自动化测试中元素定位是基本功也是很重要的一环,常用的元素定位方式网上都有很多的,一般采用强大的xpath方式来定位,xpath中又包含了很多其他方法。当然,在学习元素定位之前,需要要对前端要有一定的了

  最近在学习WEB自动化测试,web自动化测试中元素定位是基本功也是很重要的一环,常用的元素定位方式网上都有很多的,一般采用强大的xpath方式来定位,xpath中又包含了很多其他方法。当然,在学习元素定位之前,需要要对前端要有一定的了解,比如htmlCSS

百度输入框

 

首先要了解xpath中一些常用的语法规则和常用符号的意义,比如双斜杠// 单斜杠/ 星号* 等等

1. 绝对路径的方式

例如百度输入框的定位你可以写成 find_element_by_xpath("/html/head/body/script/div/script/.../span/input)。所以可以看到这种方式写起来实在是太长了,另一方面,如果百度页面做了更改,这个绝对路径会发生变化,自动化测试的脚本就需要重新维护。

2.相对路径的方式

采用相对路径的方式写xpath,百度的输入框可以这样定位 find_element_by_xpath("//form//span//input"),我是从input的父节点的父节点开始写的,显然这种方式比绝对路径更为方便,但若这个页面中还存在一个一样的相对路径,这个时候可能相对路径就会出错,因此仅靠这种方法写并不实用

3.使用元素索引定位

比如在上图的百度的页面中,标签fORM 下边有7个input,如果要定位第三个input 就可以写成 find_element_by_xpath(“//form//input[3]”)

4.使用节点中具有唯一性的属性进行匹配

这种方式就是从浏览器F12中,copy出来的xpath常见的方式,例如百度的输入框,input中的id具有唯一性,因此可以写成 find_element_by_xpath("//*[@id="kw"]"),id也可以换成name,classs属性,通常id具有唯一性,如果写的是auto-id说明是每次都变化的,不具有唯一性,不能用。后边说到的网易严选页面中就存在大量的auto-id

5.使用节点中部分属性匹配的方式

A.starts-with 

例如百度输入框input中有一个属性 name=wd,我们可以这么定位 find_element_by_xpath("//input[strats-with(@name,'wd')]"),表示:找到一个input节点,它的特征是有一个以 wd开头的name属性,注意是starts,有个s,还有python+selenium的xpath中我只看到了starts-with的方法,不知道有没有ends-with的方式,在java+selenium中是有ends-with的方法。现在很多资料都没写清楚用的什么语言,容易误导人

B.contains

用contains方法,百度输入框的xpath定位可以这样写find_element_by_xpath("//input[contains(@name,'wd')]"),表示找到一个input节点,其中它的name包含wd

还可以采用文本的方式来匹配,如果节点没有其他唯一性的属性的情况,可以尝试使用节点中的文本信息来匹配,可以这么写:find_element_by_xpath("//input[contains(text(),'xx')]") 找到一个input节点,该节点中含有xx的文本信息。contains的方法虽然好用,但会牺牲一定效率,所以尽量给它范围和限制。contains可以用处理有的节点属性中包含空格的情况

6.使用前面几种方法的组合方式

比如定位上图的百度输入框,不使用方式4,采用组合的方法可以这样写find_element_by_xpath("//*[@id='form']/span[1]/input"),表示:这个元素是处于一个id属性为form的节点下的第一个span节点下的input。若百度的输入框元素没有唯一的id,也没有其他太多的信息时,我们选取它最近的一个父辈节点(这个节点含有唯一性的属性,比如唯一的id)再用绝对路径去找到它,当然能不用绝对路径的情况下尽量不用。如果有文本信息就可以用contains方法,组合的方式能解决很多常见的定位问题。

--结束END--

本文标题: python+selenium-元素定位

本文链接: https://www.lsjlt.com/news/179466.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作