文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python+selenium-元素定位

2023-01-30 22:15

关注

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

百度输入框

 

首先要了解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方法,组合的方式能解决很多常见的定位问题。

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     813人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     354人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     318人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     435人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     224人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯