定位的原则就是: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. Crypto++编译使用

    简述 Crypto++库是一个用c++ 编写的密码类库,是一个自由软件.有关它的信息可以访问以下两个网站: Crypto++® Library Wiki-Crypto++® Library 简述 下载 ...

  2. DB2操作流程

    DB2如何创建表空间 如何创建数据库 如何创建缓冲池标签: db2数据库system脚本linuxwindows2012-06-13 19:16 8411人阅读 评论(0) 收藏 举报 版权声明:本文 ...

  3. android学习笔记二:Intent

    1.Intent作用 协助完成各个组建间的通信.如activity间.启动service.Broadcast. 2.Intent构成 1.Componet name:要启动的目的组建. 2.Actio ...

  4. 【查找结构4】红黑树 [RBT]

    红黑树的性质与定义 红黑树(red-black tree) 是一棵满足下述性质的二叉查找树: 1. 每一个结点要么是红色,要么是黑色. 2. 根结点是黑色的. 3. 所有叶子结点都是黑色的(实际上都是 ...

  5. SSIS ->> 生成时间格式

    有时我们需要生成一个文件,文件名的构成是当前时间的特定字符串格式,如yyyyMMddHHmmss 当前时间变成yyyyMMddHHmmss这个格式: (DT_WSTR,4) YEAR(GETDATE( ...

  6. Android之网络请求库

    自己学习android也有一段时间了,在实际开发中,频繁的接触网络请求,而网络请求的方式很多,最常见的那么几个也就那么几个.本篇文章对常见的网络请求库进行一个总结. HttpUrlConnection ...

  7. 如何实现上下左右键盘控制焦点使之落在相邻文本框或下拉框中-Web开发/JavaScript

    我用jquery只实现了文本框的移动(暂时上下移动等同于左右移动) $(function () { var cols = 1;//按一下跳几个控件 var obj = $("input[id ...

  8. G-sensor 与M-sensor区别

    g-sensor是重力传感器,能感应芯片在三个方向(通常是)上的重力加速度.手机里的重力球用的就是这个技术,m-sensor如果是motion sensor的简称的话,基本上指的和g-sensor是一 ...

  9. 第四讲:hibernate 的session (二)

    Session在hibernate中表示连接.下面介绍他的常用方法. 在使用前先把最重要的说了.打开API,发现在session中基本所有的方法(包括获得session的方法)都会抛出异常Hibern ...

  10. ural1238. Folding(记忆化)

    1238 这算模拟加记忆化吗 找bug找了2个多小时..记忆化部分好想 就是字符串处理部分挫了 一个个复制模拟 各种修改查找 #include <iostream> #include< ...