定位的原则就是:id name class 优先,强烈建议和前端哥哥搞好关系。定位就不是问题:实在不行就xpath和css大部分偶可以定位到。

webdriver定位的方法是通过一个By类,By类中有许多的属性,常用的有已下几个:

NO1.

ID:dom元素首选的定位方式,id是唯一,定位速度快。(和fe处好关系,用id定位杠杠的)

如By.id(“kw”) 就可以定位到百度的搜索框

NO2.

Name:表单定位为name首选,因为表单肯定会有一个name的属性。

如上图中的百度搜索框,也可以用By.name(“wd”)来定位

NO3.

class 一般代表着某一种样式属性,所有很有可能是重复的,不能精准的定位By.classname(“s_ipt”)来定位。

NO4.

linktext 链接定位 (如果元素中间有空格 请注意)

对于百度首页新闻这个链接,我们可以直接用By.linkText(“新闻”) 来查找

NO5.

xpath定位:辅助的工具 firefinder firepath 两个firefox的插件工具。

第一种xpath:绝对路径式的定位 By.xpath("html/body/div/form/input")

第二种xpath:相对的路径定位 By.xpath("//input") 一般要结合某些特定的属性值

//input 找到所有的input

@id=kw 是找到id属性=kw的

例如 By.xpath("//input[@id='kw']")

第三种xpath:使用部分属性值匹配:By.xpath("//input[starts-with(@id,'nice')]")

By.xpath("//input[contains(@id,'白菜')]")

xpath定位方法有些写的非常的长,如果不是非常熟知xpth的语法,请谨慎的使用。原因很简单,例如:By.xpath("html/body/div/form/input")这个地位的方式是绝对的定位,如果pm在其中去掉了一个属性,你的xpath就得重新的定位,xpath就使用不了。而且在茫茫多的xpath中,如何去寻找你哪一个出了问题,所以如果不懂xpath的语法,请谨慎。一切都是为了维护整个项目,简单简单!

NO6.

css定位:简单的介绍一下css的语法。

介绍三个选择器:

1.id的选择器:# 开头

2.类的选择器:. 开头

3.属性的选择器:[key=’value’]

By.cssSelector(“input[name=’username’]”);

作为一个IT行业的人,一般使用的浏览器为chrome和firefox,chrome自带了审查元素功能和xpath和css路径的复制功能,当然也不是每一个都能复制成功。

Firefox就可以扩展很多插件了:

第一个firebug,在浏览器中右击就可以查看页面的元素。

第二个fireFinder和firepath 都是寻找元素xpath路径的,我喜欢结合xpath语法然后去对比和验证自己寻找的元素路径对不对。

安装后,按F12就可以看到如下:

第三个如果你不喜欢打开新的页面,使用这个插件可以只在本页加载页面结果。

selenium python (二) 元素定位方法的更多相关文章

  1. Selenium之WebDriver元素定位方法

    Selenium WebDriver 只是 Python 的一个第三方框架, 和 Djangoweb 开发框架属于一个性质. webdriver 提供了八种元素定位方法,python语言中也有对应的方 ...

  2. Python Appium 元素定位方法简单介绍

    Python  Appium  元素定位 常用的八种定位方法(与selenium通用) # id定位 driver.find_element_by_id() # name定位 driver.find_ ...

  3. selenium自动化之元素定位方法

    在使用selenium webdriver进行元素定位时,有8种基本元素定位方法(注意:并非只有8种,总共来说,有16种). 分别介绍如下: 1.name定位 (注意:必须确保name属性值在当前ht ...

  4. selenium+java二元素定位

    页面元素定位是自动化中最重要的事情, selenium Webdriver 提供了很多种元素定位的方法.  测试人员应该熟练掌握各种定位方法. 使用最简单,最稳定的定位方法. 自动化测试步骤 定位元素 ...

  5. selenium+python自动化-元素定位

    自动化只要掌握四步操作:获取元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告. 本篇主要讲几种基本的元素定位方法元素定位在这四个环节中是至关重要的,如果说按学习精力 ...

  6. selenium+python自动化元素定位

    最近学习自动化测试,终于初步学习完成,需要进行博客日志总结,加深巩固自己的知识. 元素的八种定位方式 1.id 以百度为例子 我们在python输入的元素定位语法:bs.find_element_by ...

  7. Selenium 八种元素定位方法

    前言: 我们在做WEB自动化时,最根本的就是操作页面上的元素,首先我们要能找到这些元素,然后才能操作这些元素.工具或代码无法像我们测试人员一样用肉眼来分辨页面上的元素.那么我们怎么来定位他们呢? 在学 ...

  8. selenium python bindings 元素定位

    1. 辅助 Firepath Firefox是所有做前端的必不可少的浏览器因为firebug的页面元素显示很清晰.用selenium 去定位元素的时候Firefox还有一个非常友好的工具就是firep ...

  9. selenium常见的元素定位方法

    一.获取元素 1)通过谷歌浏览器自动的工具访问百度首页,我们可以看到,页面上的元素都是由一行行的代码组成的,它们之间有层级地组织起来,每个元素之间都有不同的标签和值,我们可以通过这些不同的标签和值来找 ...

  10. Selenium八种元素定位方法源码阅读

    接触过Selenium的都知道元素定位有八种方法,但用不同的方法在执行时有什么区别呢? 元素定位8种方法(Python版),当然还有每一个方法对应的find_elements方法 find_eleme ...

随机推荐

  1. iOS:核心动画之转场动画CATransition

    转场动画——CATransition CATransition是CAAnimation的子类,用于做转场动画,能够为层提供移出屏幕和移入屏幕的动画效果.iOS比Mac OS X的转场动画效果少一点 U ...

  2. intelliJ IDEA中项目以jar包的形式导出

    在上一篇中把intelliJ IDEA安装并配置完事后,我们就可以写scala程序了.编写完scala程序后我们要把程序导出,上传到服务器上,在spark集群下运行,下面就讲一下包的导出过程以及包在服 ...

  3. GLSL基础

    GLSL基础 OpenGL Shading Language GLSL作为一种着色语言是纯粹的和GPU打交道的计算机语言.因为GPU是多线程并行处理器,所以GLSL直接面向SIMD模型的多线程计算.G ...

  4. Algorithm: cartesian tree

    http://baike.baidu.com/link?url=XUt5fXQ-jtFBM0UdKiGA41_NWFvdFSYwVsy4SVvCRRuEBvNkLfT9TgOtzsXvaOT9nuq_ ...

  5. USACO Section 3.1: Agri-Net

    minimal spanning tree的经典题 /* ID: yingzho1 LANG: C++ TASK: agrinet */ #include <iostream> #incl ...

  6. jenkins的搭建和使用

    Jenkins 是一个开源项目,提供了一种易于使用的持续集成系统,使开发者从繁杂的集成中解脱出来,专注于更为重要的业务逻辑实现上.同时 Jenkins 能实施监控集成中存在的错误,提供详细的日志文件和 ...

  7. vs2015中安装EntityFramework

    在项目上右键,然后选择Manage NuGet Packages 搜索EntityFramework,然后Install accept Attempting to gather dependencie ...

  8. 关于在c#中引用外部dll文件,在页面中找不到命名空间

    最近在项目中碰到这样的问题,经过搜索,发现是vs2010的版本不对,VS默认的版本是.NET Framework 4 Client Profile,需要将他更改为.NET Framework 4 版本 ...

  9. [HIHO1322]树结构判定(并查集)

    题目链接:http://hihocoder.com/problemset/problem/1322 给一个图,判断这个图是不是一棵树. 判定的方法:首先是连通图,其次所有点的入度都小于等于1. /* ...

  10. C++ STL之priority_queue

    STL中的priority_queue(优先队列)是一种会按照自定义的一种方式(数据的优先级)来对队列中的数据进行动态的排序的容器,不同优先级的情况下,top()上永远是最高优先级的数据,其底层采用的 ...