WebDriver API元素的定位
一、以下截图为用FireBug定位的用火狐(Firefox)浏览器打开的百度首页,下面所讲述的八种定位方法,就是以该截图中的百度输入框为例子。
①、FireBug是Firefox浏览器下的开发类插件,通过该插件可以查看HTML、CSS、Javascript控制台、网络状况监视器、Cookies,具体内容如下面截图中的工具栏。
通过它可以方便的查看页面上的元素,根据元素路径或是标签或是属性进行定位。
FireBug安装方式:Firefox浏览器的菜单栏中选中tools(工具)-->add-ons Manager(添加组件),搜索FireBug;进行安装重启,然后在工具栏中看到Firebug的按钮。
②、FirePath是FireBug插件扩展的一个工具,用来编辑、检查和生成的XPath表达式、CSS选择器。通过XPath和CSS可快速定位页面上的元素。如下图所示:

二、首先,我们一起来分析一下 下面的这几行代码
<input id="kw" class="s_ipt" autocomplete="off" maxlength="255" value="" name="wd">
①其标签(tag)名为input;
②里面有多个属性,包括id、class、name、value
<a class="mnav" href="http://news.baidu.com">新闻</a>
③标签对<a></a>之间有文本(text)数据
三、WebDriver的八种元素定位方法:
1、通过id属性定位百度的输入框 find_element_by_id("kw")
id在HTML文档中必须是唯一的,可以想象成学生在学校的学号,公民的身份证号。
2、通过name属性定位百度的输入框 find_element_by_name("wd")
3、通过class属性定位百度的输入框 find_element_by_class("s_ipt")
4、通过tag属性定位 find_element_by_tag_name("input")
5、通过link定位(既通过标签对之间的文本信息进行定位) find_element_by_link_text("新闻")
6、通过partial link定位,它是对link定位的一种补充
例,代码如下:<a class="mnav" href="http://news.baidu.com">这是今天的当日新闻</a>
find_element_by_link_text("当日新闻")
7、通过XPath定位
①绝对路径定位(很不推荐该种定位方法,若页面样式稍微有点变化,元素就很容易找不到)
通过该种方法定位百度输入框 find_element_by_xpath(“/html/body/div/div/div/div/div/form/span/input”)
②通过标签(tag)名字和元素属性值定位
定位百度输入框 find_element_by_xpath(“//input[@id='kw']”) 或是 find_element_by_xpath("//*[id='kw']")
8、CSS定位
①通过class属性来定位百度输入框 find_element_by_css_selector(".s_ipt") 注:"."表示class属性
②通过id属性来定位百度输入框 find_element_by_css_selector("#kw") 注:"#"表示id属性
③通过标签名(tag)来定位 find_element_by_css_selector("input") 注:用标签名(tag)定位元素不需要任何符号标识
标签名重复的概率很大,通过该种方式很难直接找到想要的元素
④通过父子关系定位 父亲元素的标签名为form,查找它的所有标签名为input的子元素:
find_element_by_css_selector("form>input") 注:">"代表父子关系
⑤通过属性定位 find_element_by_css_selector("[type='submit']")
⑥通过组合定位 定位百度输入框 find_element_by_css_selector("form.fm>span>input.s_ipt")
或是find_element_by_css_selector("form#form>span>input#kw")
若文中内容有误,希望大家指正,谢谢。
WebDriver API元素的定位的更多相关文章
- Selenium的WebDriver API元素定位中的XPath和CSS
元素的定位和操作是自动化测试的核心部分,其中操作又是建立在定位的基础上的. 浏览器的常规操作 import time from selenium import webdriver # 打开浏览器 dr ...
- 转:python webdriver API 之层级定位
在实际的项目测试中,经常会有这样的需求:页面上有很多个属性基本相同的元素 ,现在需要具体定位到其中的一个.由于属性基本相当,所以在定位的时候会有些麻烦,这时候就需要用到层级定位.先定位父元素,然后再通 ...
- Webdriver API之元素定位
Webdriver提供了8种元素定位方法:id.name.class name.tag name.link text.partial link text.xpath.css selector 一.以上 ...
- 转:python webdriver API 之定位 frame 中的对象
在 web 应用中经常会出现 frame 嵌套的应用,假设页面上有 A.B 两个 frame,其中 B 在 A 内,那么定位 B 中的内容则需要先到 A,然后再到 B.switch_to_frame ...
- 转:python webdriver API 之简单对象的定位
对象(元素)的定位和操作是自动化测试的核心部分,其中操作又是建立在定位的基础上的,因此元素定位就显得非常重要. (本书中用到的对象与元素同为一个事物)一个对象就像是一个人,他会有各种的特征(属性) , ...
- 【selenium】- webdriver常见元素定位(上)
本文由小编根据慕课网视频亲自整理,转载请注明出处和作者. 1. 元素的定位 2.By.id 打开Firefox,打开百度首页,右键点击选择“使用Firebug”查看元素. 点击红框内的按钮,将鼠标指针 ...
- 转:python webdriver API 之操作测试对象
一般来说,所有有趣的操作与页面交互都将通过 WebElement 接口,包括上一节中介绍的对象定位,以及本节中需要介绍的常对象操作.webdriver 中比较常用的操作元素的方法有下面几个: cle ...
- selenium2(WebDriver) API
selenium2(WebDriver) API 作者:Glen.He出处:http://www.cnblogs.com/puresoul/ 1.1 下载selenium2.0的包 官方downl ...
- Selenium2+Python:Webdriver API速记手册
由于web自动化常常需要控制浏览器行为和操作页面元素,相关函数又比较多,于是再此记下一份Webdriver API查阅文档以备不时之需. 参考:虫师<Selenium2自动化测试实战>,和 ...
随机推荐
- Daily Scrum Meeting 汇总
Alpha Daily Scrum Meeting --FirstDay(11.8) Daily Scrum Meeting --SecondDay(11.9) Daily Scrum Meeting ...
- java中的单例模式(懒汉式+饿汉式)
什么是单例模式: 单例模式既只能在自己本类中创建有且唯一的一个实例(姑且不考虑映射的情况)通过方法将该实例对外公开 第一种:单例模式-懒汉式 既调用getInstance()方法返回实例之前判断有没有 ...
- 修改radio与check样式
一般的radio与check的样式很难看,这个时候就需要我们自己修改其样式 逻辑思维: 1.用label包裹input标签以及样式标签,然后将radio定位到界面以外,设置样式标签的样式 2.使用伪类 ...
- bzoj 3202: [Sdoi2013]项链
Description 项链是人体的装饰品之一,是最早出现的首饰.项链除了具有装饰功能之外,有些项 链还具有特殊显示作用,如天主教徒的十字架链和佛教徒的念珠. 从古至今人们为了美化人体本身,也美 化环 ...
- Leetcode Palindrome Linked List
Given a singly linked list, determine if it is a palindrome. Follow up:Could you do it in O(n) time ...
- Swift的关键字
在声明中使用关键字 let :声明一个常量 var :声明一个变量 class :声明一个类 static :静态的 deinit :反初始化方法?析构方法 init :构造方法?初始化方法 en ...
- SpringMVC4零配置--web.xml
servlet3.0+规范后,允许servlet,filter,listener不必声明在web.xml中,而是以硬编码的方式存在,实现容器的零配置. ServletContainerInitiali ...
- 使用Prerender.io为angular项目做SEO
现在的项目的为了更好的分工明确,降低耦合都开始采用前后端分离的形式进式开发,我们也采用这种开发形式,前端用angular开发.虽说刚开始也遇各种坑,但是后期熟悉了之后简直爽呆.一个比较大的坑就是SEO ...
- indexOf、instanceOf、typeOf、valueOf详解
1.indexOf() 该方法用来返回某个指定的字符串值在字符串中首次出现的位置. 语法:indexOf(searchvalue,fromindex);两个参数,参数一表示查询的字符串值,参数二可选表 ...
- 工作中那些提高你效率的神器(第一篇)_Everything
引言 无论是工作还是科研,我们都希望工作既快又好,然而大多数时候却迷失在繁杂的重复劳动中,久久无法摆脱繁杂的事情. 你是不是曾有这样一种想法:如果我有哆啦A梦的口袋,只要拿出神奇道具就可解当下棘手的问 ...