嘻嘻,书接上回,接着唠,这里先补充一下自动化要掌握的四个步骤吧:获取元素、操作元素、获取返回值、断言(返回结果与期望结果是否一致),最后就是自动化测试报告的生成。这一片主要讲一下如何进行元素定位。元素定位在这四个环节是至关重要的,如果在一个页面上的元素不能被定位到,那后面的操作就无法继续了。webdriver给我提供了八种基本元素定位方法。

一、环境准备:

1.浏览器选择:Firefox

2.安装插件:Firebug和FirePath(设置》附加组件》搜索:输入插件名》下载安装后重启浏览器)

3.安装完成后,页面右上角有个小爬虫图标

4.快速查看xpath插件:XPath Checker这个可下载,也可以不下载,也可不用下载

5.插件安装完成后,点开附件组件》扩展,如下图所示

二、查看页面元素

以百度搜索框为例,先打开百度网页:

1.点右上角的小爬虫按钮

2.点左下角箭头

3.将箭头移动至百度搜索输入框上,输入框高亮状态

4.下方红色区域就是定位到输入框的属性:

<input id="kw" class="s_ipt" type="text" autocomplete="off" maxlength="100" name="wd">

三、元素定位

元素定位:find_element_by_id()

1.从上面定位到的元素属性中,可以看到有个id属性:id=“search-key”,这里可以通过它的id属性定位到这个元素。

2.定位到搜索框后,用send_keys()方法。

元素定位:find_element_by_name()

1.从上面定位到的元素属性中,可以看到有个name属性:name="wd",这里可以通过它的name属性单位到这个元素。

元素定位:find_element_by_class_name()

1.从上面定位到的元素属性中,可以看到有个class属性:class="s_ipt",这里可以通过它的class属性单位到这个元素。

元素定位:find_element_by_tag_name()

1.从上面定位到的元素属性中,可以看到每个元素都有tag(标签)属性,如搜索框的标签属性,就是最前面的input。

2.很明显,在一个页面中,相同的标签有很多,所以一般不用标签来定位。以下例子,仅供参考和理解,运行肯定报错。

元素定位:find_element_by_link_text()

1.定位百度页面上"hao123"这个按钮。

查看页面元素:

<a class="mnav" target="_blank" href="http://www.hao123.com">hao123</a>

2.从元素属性可以分析出,有个href = "http://www.hao123.com" 说明它是个超链接,对于这种元素,可以用以下方法。

元素定位:find_element_by_partial_link_text()

1.有时候一个超链接它的字符串可能比较长,如果输入全称的话,会显示很长,这时候可以用一模糊匹配方式,截取其中一部分字符串就可以了

2.如“hao123”,只需输入“ao123”也可以定位到。

元素定位:find_element_by_xpath()

1.以上定位方式都是通过元素的某个属性来定位的,如果一个元素它既没有id、name、class属性也不是超链接,这么办呢?或者说它的属性很多重复的。这个时候就可        以用xpath解决。

2.xpath是一种路径语言,跟上面的定位原理不太一样,首先第一步要先学会用工具查看一个元素的xpath。

3.按照上图的步骤,在FriePath插件里copy对应的xpath地址

元素定位:find_element_by_css_selector()

1.css是另外一种语法,比xpath更为简洁,性能也好一些,但是不太好理解,我个人也理解的不是很透彻(o(╯□╰)o)

2.打开FirePath插件选择css

3.定位到后如下图红色区域显示

总结:

selenium的webdriver提供了八种基本的元素定位方法,前面六种是通过元素的属性来直接定位的,后面的xpath和css定位更加灵活,需要重点掌握其中一个。

1.通过id定位:find_element_by_id()

2.通过name定位:find_element_by_name()

3.通过class定位:find_element_by_class_name()

4.通过tag定位:find_element_by_tag_name()

5.通过link定位:find_element_by_link_text()

6.通过partial_link定位:find_element_by_partial_link_text()

7.通过xpath定位:find_element_by_xpath()

8.通过css定位:find_element_by_css_selector()

未完待续...

selenium2+python自动化2-元素定位的更多相关文章

  1. selenium+python自动化之元素定位

    自动化按步骤拆分的话,可以分为四步操作:定位元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告.本篇接下来讲基本的八种元素定位方法.说的通俗一点,就是教大家找对象. ...

  2. Python自动化学习--元素定位

    from selenium import webdriver import time driver = webdriver.Chrome() driver.get("https://www. ...

  3. Selenium2+python自动化8-SeleniumBuilder辅助定位元素

    前言 福利来了,对于用火狐浏览器的小伙伴们,你还在为定位元素而烦恼嘛? 上古神器Selenium Builder来啦,哪里不会点哪里,妈妈再也不用担心我的定位元素问题啦!(但是也不是万能,基本上都能覆 ...

  4. Selenium2+python自动化8-SeleniumBuilder辅助定位元素【转载】

    前言 福利来了,对于用火狐浏览器的小伙伴们,你还在为定位元素而烦恼嘛? 上古神器Selenium Builder来啦,哪里不会点哪里,妈妈再也不用担心我的定位元素问题啦!(但是也不是万能,基本上都能覆 ...

  5. Selenium2+python自动化45-18种定位方法(find_elements)

    前言 江湖传言,武林中流传八种定位,其中xpath是宝刀屠龙,css是倚天剑. 除了这八种,其实还有十种定位方法,眼看就快失传了,今天小编让失传已久的定位方法重出江湖! 一.十八种定位方法 前八种是大 ...

  6. Appium+python自动化12-appium元素定位

    前言 appium定位app上的元素,可以通过id,name.class这些属性定位到 一.id定位 1.appium的id属性也就是通过UI Automator工具查看的resource-id属性

  7. Selenium2+python自动化45-18种定位方法(find_elements)【转载】

    前言 江湖传言,武林中流传八种定位,其中xpath是宝刀屠龙,css是倚天剑. 除了这八种,其实还有十种定位方法,眼看就快失传了,今天小编让失传已久的定位方法重出江湖! 一.十八种定位方法 前八种是大 ...

  8. Appium+python自动化12-appium元素定位【转载】

    前言 appium定位app上的元素,可以通过id,name.class这些属性定位到 一.id定位 1.appium的id属性也就是通过UI Automator工具查看的resource-id属性

  9. Appium+python自动化-appium元素定位

    前言 appium定位app上的元素,可以通过id,name.class这些属性定位到 一.id定位 1.appium的id属性也就是通过UI Automator工具查看的resource-id属性

随机推荐

  1. VUE 之 vuex 和 axios

    1.Vuex 部分 1.1 Vuex 是专门为vue.js设计的集中式状态管理架构,其实就是将数据存在一个store中,共各个组件共享使用 1.2 配置: 1.2.1 下载:--npm install ...

  2. python day-3 基本数据类型

    1. 编码 1. 最早的计算机编码是ASCII. 美国人创建的. 包含了英文字母(大写字母, 小写字母). 数字, 标点等特殊字符!@#$% 128个码位 2**7 在此基础上加了一位 2**8 8位 ...

  3. 【bzoj4653】[Noi2016]区间

    离散化+线段树 #include<algorithm> #include<iostream> #include<cstdlib> #include<cstri ...

  4. 基于Python 的简单推荐系统

    def loadExData(): return[[1,1,1,0,0], [2,2,2,0,0], [1,1,1,0,0], [5,5,5,0,0], [1,1,0,2,2], [0,0,0,3,3 ...

  5. android 一个TextView设置多种颜色

    时候一个文本框为了强调内容需要显示不同颜色,用以下代码可以轻松实现 方法一:(适用于颜色变化多的情况)   //为文本框设置多种颜色 textView=(TextView)findViewById(R ...

  6. ios 给移动的控件添加点击事件

    前言: 给一个UIView做移动动画,虽然看起来frame在持续改变,但是它的frame已经是最终值了. 也就是说表面看到的动画都是假象,它的真实位置已经是固定的了.所以只有点击在他的真实frame范 ...

  7. 「USACO」「LuoguP2731」 骑马修栅栏 Riding the Fences(欧拉路径

    Description Farmer John每年有很多栅栏要修理.他总是骑着马穿过每一个栅栏并修复它破损的地方. John是一个与其他农民一样懒的人.他讨厌骑马,因此从来不两次经过一个栅栏.你必须编 ...

  8. 区间DP中的环形DP

    vijos1312 链接:www.vijos.org/p/1312 题目分析:经典的环形DP(区间DP) 环形DP,首先解环过程,把数组复制一遍,n个数变成2n个数,从而实现解环 dp[i][j]表示 ...

  9. 【POJ 3580】 SuperMemo

    [题目链接] 点击打开链接 [算法] 本题也是Splay区间操作的模板题,不过要比BZOJ 3223要稍微复杂一些,做完此题后,我终于对Splay有了更深入的理解,有“拨开云雾见青天”的感觉 本题还是 ...

  10. java try·····catch·····异常处理学习

    异常处理(又称为错误处理)功能 用于处理软件或信息系统中出现的异常状况(即超出程序正常执行流程的某些特殊条件). try....catch....只是异常处理的一种常用方法 try{ //可能导致异常 ...