Selenium的定位方式一共有18种,单数8种,复数8种,最后两种是前面这16种的底层封装

单数形式8种

 # 1、id定位
al = driver.find_element_by_id('i1')
al.send_keys('id定位') # 2、class定位
bl = driver.find_element_by_class_name('classname')
bl.send_keys('class定位') # 3、css selector定位
cl = driver.find_element_by_css_selector('#i1')
cl.send_keys('css selector定位') # 4、name定位:按照标签中的name属性定位
dl = driver.find_element_by_name('name')
dl.send_keys('name定位') # 5、link_text 文本内容定位
import time
time.sleep(1)
driver.execute_script('window.scrollTo(0,0);') # 跳转到网页的最上面
time.sleep(1)
el = driver.find_element_by_link_text('跳转大师兄博客地址')
el.click() # 6、partial_link_text 模糊文本内容匹配
import time
time.sleep(1)
driver.execute_script('window.scrollTo(0,0);') # 跳转到网页的最上面
time.sleep(1)
fl = driver.find_element_by_partial_link_text('跳转')
fl.click() # 7、Xpath 定位
gl = driver.find_element_by_xpath('//input[@placeholder="请通过XPATH定位元素"]')
gl.send_keys('xpath 定位') # 8、tag_name 标签名定位
hl = driver.find_element_by_tag_name('input')
hl.send_keys('tag_name 标签名定位')

复数形式也是8种,是以上8种的复数形式,返回的是一个列表

 # 1、id定位
als = driver.find_elements_by_id('i1')
als[0].send_keys('id定位') # 2、class定位
bls = driver.find_elements_by_class_name('classname')
bls[0].send_keys('class定位') # 3、css selector定位
cls = driver.find_elements_by_css_selector('input')
cls[2].send_keys('定位到第三个input输入框') # 4、name定位:按照标签中的name属性定位
dls = driver.find_elements_by_name('name')
dls[0].send_keys('name定位') # 5、link_text 文本内容定位
import time
time.sleep(1)
driver.execute_script('window.scrollTo(0,0);') # 跳转到网页的最上面
time.sleep(1)
els = driver.find_elements_by_link_text('跳转大师兄博客地址')
els[0].click() # 6、partial_link_text 模糊文本内容匹配
import time
time.sleep(1)
driver.execute_script('window.scrollTo(0,0)') # 跳转到网页的最上面
time.sleep(1)
fls = driver.find_elements_by_partial_link_text('示例')
fls[0].click() # 7、Xpath 定位
gls = driver.find_elements_by_xpath('//input')
gls[4].send_keys('xpath 定位') # 8、tag_name 标签名定位
hls = driver.find_elements_by_tag_name('input')
hls[5].send_keys('tag_name 标签名定位')

最后两种是前面16种的底层封装

 driver.find_element('id','i1')
driver.find_elements('xpath','//input')

以上两种定位方式,第一个参数填入下面8个字符串,分别对应上面的16种定位方式,单数和复数分别对应

 "id"
"xpath"
"link text"
"partial link text"
"name"
"tag name"
"class name"
"css selector"

下面举例说明:

 ali = driver.find_element('id','i1')
ali.send_keys('xxxx')
# 相当于:
al = driver.find_element_by_id('i1')
al.send_keys('xxxx') bls = driver.find_elements('css selector','input')
bls[1].send_keys('css selector')
# 相当于:
bl = driver.find_elements_by_css_selector('input')
bl[1].send_keys('css selector')

总结:

  我们工作当中应该优先使用Css Selector定位,如果定位不到再用Xpath定位。因为查看源代码发现:使用id、name、tag name、class name定位,都会转换成css selector定位,具体源代码如下:

     def find_element(self, by=By.ID, value=None):
if self.w3c:
if by == By.ID:
by = By.CSS_SELECTOR
value = '[id="%s"]' % value
elif by == By.TAG_NAME:
by = By.CSS_SELECTOR
elif by == By.CLASS_NAME:
by = By.CSS_SELECTOR
value = ".%s" % value
elif by == By.NAME:
by = By.CSS_SELECTOR
value = '[name="%s"]' % value
return self.execute(Command.FIND_ELEMENT, {
'using': by,
'value': value})['value'] def find_elements(self, by=By.ID, value=None):
if self.w3c:
if by == By.ID:
by = By.CSS_SELECTOR
value = '[id="%s"]' % value
elif by == By.TAG_NAME:
by = By.CSS_SELECTOR
elif by == By.CLASS_NAME:
by = By.CSS_SELECTOR
value = ".%s" % value
elif by == By.NAME:
by = By.CSS_SELECTOR
value = '[name="%s"]' % value
return self.execute(Command.FIND_ELEMENTS, {
'using': by,
'value': value})['value'] or []

Selenium学习之==>18种定位方式的使用的更多相关文章

  1. selenuim中18种定位方式

    18种定位方式=8种单数形式+8种复数形式+2种底层方案 单数可以确定唯一,复数无法确定: 单数形式定位,返回的是一个元素,复数形式,返回的是一个列表,返回的是当前页面所有符合要求的元素,没有意义 一 ...

  2. Selenium 之18 种定位方式

    1 id 定位 driver.find_element_by_id() HTML 规定id 属性在HTML 文档中必须是唯一的.这类似于公民的身份证号,具有很强的唯一性 from selenium i ...

  3. Selenium学习之==>三种等待方式

    在UI自动化测试中,必然会遇到环境不稳定,网络慢的情况,这时如果你不做任何处理的话,代码会由于没有找到元素,而报错.这时我们就要用到wait(等待),而在Selenium中,我们可以用到一共三种等待, ...

  4. Android中几种定位 方式

    介绍的几种定位方式 http://www.cnblogs.com/cuihongyu3503319/p/3863867.html 百度地图api: http://lbsyun.baidu.com/in ...

  5. selenium WebDriver 八种定位方式源码

    /* * 多种元素定位方式 */ package com.sfwork; import java.util.List; import org.openqa.selenium.By; import or ...

  6. 关于selenium中的三种等待方式与EC模块的知识

    1. 强制等待 第一种也是最简单粗暴的一种办法就是强制等待sleep(xx),强制让闪电侠等xx时间,不管凹凸曼能不能跟上速度,还是已经提前到了,都必须等xx时间. 看代码: 1 2 3 4 5 6 ...

  7. android 三种定位方式

    http://www.cnblogs.com/oudi/archive/2012/03/22/2411509.html 最近在看android关于定位的方式,查了很多资料,也做了相关实验,在手机上做了 ...

  8. selenium常用的三种等待方式

    一.强制等待 使用方法:sleep(X),等待X秒后,进行下一步操作. 第一种也是使用最简单的一种办法就是强制等待sleep(X),强制让浏览器等待X秒,不管当前操作是否完成,是否可以进行下一步操作, ...

  9. position的四种定位方式:static、fixed、relative、absolute

    position属性用来规定元素的定位类型和方式 ①position:static 默认值,没有定位,元素出现在正常的流中: ②position:fixed  固定定位 是相对于浏览器窗口来进行定位: ...

随机推荐

  1. C++ 数据类型提高+内存四区

    # 这一章节全部是C语言的内容# 数据类型提高**注意**1.数组作为形参会退化为指针(验证,传参后用sizeof进行打印,可以看出打印出数组的字节为一字节)2.形参在函数上和函数内是一样的,只不过对 ...

  2. linux中shell编辑小技巧

    一.循环1到100 ..};do echo $i done 二.获取100以内的随机值 ] 三.截取字符串 demo= :} #截取3位字符echo ${demo:1} #截取1到最后的字符 希望大家 ...

  3. 界面开发工具集Telerik UI for ASP.NET AJAX发布R2 2019

    Telerik UI for ASP.NET AJAX拥有构建ASP.NET AJAX和SharePoint应用程序的80+控件,将为任何浏览器和设备构建Web Forms应用程序的时间缩短一半.Te ...

  4. python实例31[生成随即的密码]

    代码: import random import string import time # strong.high = 3  #random for the whole passwd #storng. ...

  5. java数据结构3--List

    List 1.1 list接口的简介 1.2 list实现子类 ArrayList:线程不安全,查询速度快,底层用的是数组,增删慢LinkedList:线程不安全,链表结构,增删速度快,查询慢Vect ...

  6. 《Head First 软件开发》阅读六

    软件错误:专业排错 你编写的代码,你的责任.处理错误的方法和其他流程一样,准备好白板.让客户参与.满怀信心的估计.重构与预构. 首先是与客户加强沟通,不管是谁的代码,在自己的系统里就是自己的代码.使代 ...

  7. 【NOIP2012模拟10.31】掷骰子

    题目 太郎和一只免子正在玩一个掷骰子游戏.有一个有N个格子的长条棋盘,太郎和兔子轮流掷一个有M面的骰子,骰子M面分别是1到M的数字.且掷到任意一面的概率是相同的.掷到几.就往前走几步.当谁走到第N格时 ...

  8. vue中为computed计算属性传参遇到的问题,已解决

    首先介绍下项目背景, 需要将 dataList 中的 item.stars 属性传入 computed 返回要展示的值 部分代码如下(请不要纠结为什么这么做,数据格式确认如此): <li cla ...

  9. MoreExecutors工具类使用

    MoreExecutors是guava提供的工具类,是对jdk自带的Executors工具类的扩展,主要方法如下: 1.addDelayedShutDown()方法的两个重载: public stat ...

  10. [luogu]P1514 引水入城[搜索][记忆化][DP]

    [luogu]P1514 引水入城 引水入城 题目描述在一个遥远的国度,一侧是风景秀美的湖泊,另一侧则是漫无边际的沙漠.该国的行政区划十分特殊,刚好构成一个N 行M 列的矩形 ,如下图所示,其中每个格 ...