1. id定位

 find_element_by_id()方法通过id来定位元素

例如: find_element_by_id("kw")

find_element_by_id("su")

  2.name 定位

HTML规定name来指定元素的名称,那么的属性值在当前页面中可以不唯一。通过那么定位百度输入框

   find_element_by_name()方法通过name属性值来定位元素。由于百度收索框没有提供name属性,因此不能通过name属性来定位输入框

例如:   find_element_by_name("wd")

     3.class定位

HTML中规定class来指定元素的类名,可以定位输入框和收索框

find_element_by_class_name()方法通过class属性来定位元素。

例如:find_element_by_class_name("s_ipt")

find_element_by_class_name("bg_s_btn")

    4.tag定位

通过tag_name定位百度输入框与百度按钮。

      find_element_by_tag_name()方法通过元素的tag name来定位元素

例如:find_element_by_tag_name()

    5.link定位

   通过link专门定位文本链接。

通过link定位的链接如下:

find_element_by_link_text("新闻")

find_element_by_link_text("地图")

通过find_element_by_link_text()方法通过元素标签对之间的文本信息来定位元素。

6.parital link定位

partial link定位是对link定位的一种补充,有些文办理按揭过长,这是我么可以取文本链接的一部分定位,只要这一部分信息可以唯一的标识 这个链接

通过partiallink定位如下:

find_element_by _partial _link _text("很长文本链接的一部分")

find_element_by_partial_link_text()方法通过元素标签对之间的部分文本信息来定位元素。

7.Xpath定位

XPath有多种定位策略,因为HTML可以看做xml的一种shiyo实现,所以selenium用户可以使用这种你再强大的语言在web 应用中定位元素

7.1绝对路径定位

xpath有多种定位策略,最简单直观的就是写出元素的绝对路径。

find_element_by_xpath()方法使用XPATH语言来定位元素。Xpath主要使用标签名的层级关系来定位元素的绝对路径,最外层为html语言。在body文本内,一级一级往下查找。如果一个层级下有对各相同的标签名,那么就按上下顺序确定第几个。例如:div[2]表示当前层级下的第二个div标签。

 7.2利用元素属性定位

除了使用绝对路径外,Xpath也可以使用元素的属性来定位。同样以百度收索框和搜索按钮为例:

find_element_by_xpath("//*[@id="kw"]")

find_element_by_xpath("//*[@id="su"]")

注:1.属性值要用用单引号表示

2.//表示当前页面的某个目录,input表示定位元素的标签名,[@id="kw"]表示元素的id属性值等于kw

下面是通过name 和class属性值来定位。

find_element_by_xpath("//*[@class="bg s_btn"]")

find_element_by_xpath("//input[@class="s_ipt]")

find_element_by_xpath("//input[@name="wd"]")

如果不想指定标签名,则可以用星号(*)代替,使用Xpath不局限于id,name和class这个三个属性值,元素的任意属性值都可以使用,只要它能唯一标识一个元素。

find_element_by_xpath("//input[@maxlength= '100']")

find_element_by_xpath("//input[@autocomplete='OFF']")

find_element_by_xpath("//input[@type='submit']")

7.3层级定位

find_element_by_xpath('''//span[@class='bg_s_ipt_wr']/input')

span[@class='bg_s_ipt_wr']通过class属性定位到父元素,后面/input就表示父元素下满的子元素。如果父元素没有利用的属性值。

find_element_by_xpath(“//form[@id='form']/span/input”)

find_element_by_xpath("//form[@id='form'span(2)/input]")

我们可以通过该方法一级一级的向上查找,知道找到最外层的<html>标签,即可写出一个绝对路径

7.4使用逻辑运算符

如何一个属性不能唯一区分一个元素,可以使用逻辑运算符连接多个属性来查找元素

8.CSS定位

CSS(Cascading Style Sheets)层叠样式表是一种语言,它用来表示HTML和XML文档的表现,CSS使用选择器来为页面绑定属性。这些选择器可以被Sselenium用做另外的定位策略。

  id name  class  parital link        
方法 find_element_by_id() find_element_by_name()  find_element_by_class_name()  find_element_by_partial_link_text()        
例子

find_element_by_id("kw")

find_element_by_id("su")

 find_element_by_name("wd")

find_element_by_class_name("s_ipt")

find_element_by_class_name("bg_s_btn")

  find_element_by _partial _link _text("很长文本链接的一部分")        
范围 1.输入框  输入框  输入框和收索框          

 

selenium的定位的更多相关文章

  1. selenium之 定位以及切换frame(iframe)

    Set<String> windows = driver.getWindowHandles();        int count = 0;        for(String handl ...

  2. selenium各种定位方法(转)

    selenium使用 Xpath CSS JavaScript jQuery的定位方法 (治疗selenium各种定位不到,点击不了的并发症) 2017年07月28日 22:47:36 阅读数:369 ...

  3. selenium的定位方式

    1.selenium的定位方式 selenium有18种定位方式,8种单数,8种复数,2种父类 2.8种单数定位方式 from selenium import webdriverimport time ...

  4. 自动化测试基础篇--Selenium元素定位

    摘自https://www.cnblogs.com/sanzangTst/p/7457111.html 一.Selenium元素定位的重要性: Web自动化测试的操作:获取UI页面的元素,对元素进行操 ...

  5. selenium配置文件定位元素

    之前的写的selenium的定位元素进行测试的代码,现在一运行就报找不到元素了,之前运行的好好的. 我查看网站源码后,发现网站元素确实是变了,原来的定位的xpath代码压根全部找不到了,于是 想着,以 ...

  6. Selenium3 + Python3自动化测试系列二——selenium元素定位

    一.selenium元素定位 Selenium对网页的控制是基于各种前端元素的,在使用过程中,对于元素的定位是基础,只有准去抓取到对应元素 才能进行后续的自动化控制,我在这里将对selenium8种元 ...

  7. selenium iframe 定位 qq空间说说

    selenium iframe 定位  qq空间说说

  8. py+selenium 无法定位ShowModalDialog模态窗口【已解决】

    问题:无法定位弹出的模态窗口. 前瞻: 模态窗口:关闭之前,无法操作其他窗口. 但是selenium无法定位到这类窗口,百度说是目前selenium不支持处理模态窗口. 目标:定位到窗口里面的元素,完 ...

  9. python selenium八大定位方法

    一.定位方法 注意:元素属性必须唯一存在 #id定位 find_element_by_id() #name定位 find_element_by_name() #class_name定位 find_el ...

  10. selenium元素定位之css选择器

    在selenium元素定位时会用到css选择器选取元素,虽说xpath在定位元素时能解决大部分问题,但使用css选择器选取元素也是一种不错的选择. css相较与xpath选择元素优点如下: 表达式更加 ...

随机推荐

  1. final/finalize/finally的区别

    一.性质不同 (1)final为关键字: (2)finalize()为方法:---垃圾回收机制中的方法(GC) (3)finally为为区块标志,用于try语句中: 二.作用 (1)final为用于标 ...

  2. springmvc源码分析系列-请求处理流程

    接上一篇-springmvc源码分析开头片 上一节主要说了一下springmvc与struts2的作为MVC中的C(controller)控制层的一些区别及两者在作为控制层方面的一些优缺点.今天就结合 ...

  3. Java代码加密与反编译(一):利用混淆器工具proGuard对jar包加密

    Java 代码编译后生成的 .class 中包含有源代码中的所有信息(不包括注释),尤其是在其中保存有调试信息的时候.所以一个按照正常方式编译的 Java .class 文件可以非常轻易地被反编译.通 ...

  4. Laravel中的模板引擎Blade

    <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  5. sfc命令

    开始—>运行—>再输入“sfc /scannow”(不含引号),“sfc”是“系统文件检测”程序,它是一个在命令提示符下使用的实用程序,只有是管理员才能使用该程序,这个程序的作用就是检测系 ...

  6. Android 4.2开发环境搭建

    一.工具 jdk1.7; eclipse 4.3(for java ee); Android SDK; 二.安装JDK并配置 安装略,配置如下: 右击 “我的电脑”->属性->高级系统设置 ...

  7. 支持lua的框架和ide

    1.Kony http://mobilehub.io/products/kony 2.CryEngine http://mobilehub.io/products/cryengine 3.Dragon ...

  8. F#周报2019年第20期

    新闻 2019年理事会活动 "实用的F#挑战"意见截止日期接近,不要忘记提交博客文章或者其它作品 接口中的默认实现 .NET Core 3.0里的性能增强 使用Try .NET创建 ...

  9. 洛谷P3292 [SCOI2016]幸运数字(倍增+线性基)

    传送门 不知道线性基是什么东西的可以看看蒟蒻的总结 第一眼:这不会是个倍增LCA暴力合并线性基吧…… 打了一发……A了? 所以这真的是个暴力倍增LCA合并线性基么…… ps:据某大佬说其实可以离线之后 ...

  10. HDU6440(费马小定理)

    其实我读题都懵逼--他给出一个素数p,让你设计一种加和乘的运算使得\[(m+n)^p = m^p+n^p\] 答案是设计成%p意义下的加法和乘法,这样:\[(m+n)^p\ \%\ p = m+n\] ...