Web自动化测试 四 ----- python selenium 八大元素定位

python selenium 八大元素定位方法

前提条件:先要引入webdriver模块,创建一个Chrom浏览器对象,以及打开一个网页(以百度为例)。

1 from selenium import webdriver
2
3 driver = webdriver.Chrome()
4
5 driver.get(‘http://www.baidu.com‘)

一、ID定位

driver.find_element_by_id(‘kw‘)

  备注:

  • 此方法相当于JS中的getElementById(),ID是唯一的
  • 但是ID值也是有可能动态变化的,如果ID是带数字的或者是使用的不太规则的字符串(可能经过编码处理),那么ID值很有可能是动态变化的
  • 尽量避免使用带数字或者不规则的属性去定位元素

二、name定位

driver.find_elements_by_name(‘wd‘) # 返回的是列表,找出来的元素不一定是唯一的
driver.find_element_by_name(‘wd‘) # 只会返回找到的第一个元素
  • name属性经常用来进行元素定位(input输入、标记),但是要注意radio和checkbox,返回的是一个WebElement。

实例:

new_ele = driver.find_element_by_name(‘tj_trnews‘)
print(new_ele.text)  # 获取元素的文本
print(new_ele.get_attribute(‘href‘)) # get_attribute方法用于获取某个元素的某个属性
print(new_ele.tag_name)
# 使用这种不唯一的属性定位元素时。可以现在网页上用js定位一下看属性是否是唯一的
# 一个类的方法上有@property,表示把一个方法变为一个属性,叫做动态属性

  

三、classname定位

d = driver.find_element_by_class_name(‘s_btn‘)
d1 = driver.find_elements_by_class_name(‘s_btn‘)
  • 如果classname有空格,要把有空格的部分去掉,再次确认用没用空格的部分查找看是否是唯一的元素

四、tagname标签名定位

  • 基本不用,因为找出来的元素一大把

五、超链接定位

a = driver.find_element_by_link_text(‘新闻‘)

六、partialLink定位

b = driver.find_element_by_partial_link_text(‘新‘) # 通过一部分查找

七、Xpath定位

1、定义

Xpath即为XML(XML Path Languagr),他是一种用来确定XML文档中某个部分的语言。

组合:可以过滤很多元素。

层级关系:

  • /表示儿子
  • //表示所有的下属标签(子孙)
  • ..表示上一级
  • .表示当前层级

2、使用方法

//input[@class=‘s_ipt‘] (谓语条件)
//input[@class=‘s_ipt‘ and not @name=‘wd‘ and @id=‘kw‘]

//input[text()=‘新闻‘]
//input[contains(text(), ‘value‘)]
//input[contains(@class, ‘value‘)]

元素构成:

  • tagname
  • 属性
  • text
  • 下属标签

//相对定位[谓语条件(@class=‘‘)]/子元素tag[谓语条件]

轴定位/轴运算:啰嗦复古的写法,但是更加灵活。

通过相对路径定位

//parent::form[@id=‘form‘]
//轴关系::元素类型[谓语条件]
//input[@name=‘ie‘]//parent::form[@id=‘form‘]
//input[@name=‘ie‘]//parent::form[@class, ‘value‘]
*表示 通配符

八、CSS定位

暂时没总结

实例练习:

"""
 _*_ coding: utf - 8 _*_
 @Time        :2019/7/14:23:32
 @Author      :lemon_qiao
 @Email       :[email protected]
 @File        :八大元素定位练习.py
 @ Software:PyCharm Community Edition

 """
from selenium.webdriver import Chrome

driver = Chrome()

driver.get(‘http://www.baidu.com‘)

# 1、ID定位
by_id = driver.find_element_by_id(‘kw‘) # 百度首页的输入框
print(‘by_id定位的ype为:【{}】,value为:【{}】‘.format(type(by_id), by_id))

# 2、name定位
by_name = driver.find_element_by_name(‘wd‘)  # 百度首页的输入框
by_name1 = driver.find_elements_by_name(‘wd‘)  # 百度首页的输入框
print(‘by_name的type为:【{}】,value为:【{}】‘.format(type(by_name), by_name))
print(‘by_name1的type为:【{}】,value为:【{}】‘.format(type(by_name1), by_name1))

# 3、classname定位
# by_class = driver.find_element_by_class_name(‘btn self-btn bg s_btn‘)  有空格会报错
by_class = driver.find_element_by_class_name(‘s_btn‘)
by_class1 = driver.find_elements_by_class_name(‘s_btn‘)
print(‘by_class的type为:【{}】,value为:【{}】‘.format(type(by_class), by_class))
print(‘by_class1的type为:【{}】,value为:【{}】‘.format(type(by_class1), by_class1))

# 4、tagname标签名定位
by_tag = driver.find_element_by_tag_name(‘input‘)
print(‘by_tag的value为:【{}】:‘.format(by_tag))

# 5、超链接定位
a = driver.find_element_by_link_text(‘新闻‘)
print(‘超链接定位a的type为:【{}】,value为:【{}】‘.format(type(a), a))

# 6、partialLink定位
b = driver.find_element_by_partial_link_text(‘新‘) # 通过一部分查找
print(‘partialLink定位b的ype为:【{}】,value为:【{}】‘.format(type(b), b))

# 7、Xpath定位
c = driver.find_element_by_xpath("//a[text()=‘学术‘]")
# d = driver.find_element_by_xpath("//span[contains(@class, ‘refresh‘)]")
d = driver.find_element_by_xpath("//input[@class=‘s_ipt‘ and @name=‘wd‘ and @id=‘kw‘]")
print(‘Xpath定位c的ype为:【{}】,value为:【{}】‘.format(type(c), c))
print(‘Xpath定位d的ype为:【{}】,value为:【{}】‘.format(type(d), d))
e = driver.find_element_by_xpath("//a[contains(text(), ‘123‘)]")
f = driver.find_element_by_xpath("//input[contains(@class, ‘ipt‘)]")

# 轴定位
h = driver.find_element_by_xpath("//input[@name=‘ie‘]//parent::form[@id=‘form‘]")
print(h)

  运行结果:

by_id定位的ype为:【<class ‘selenium.webdriver.remote.webelement.WebElement‘>】,value为:【<selenium.webdriver.remote.webelement.WebElement (session="d60407228c0913a1db912c04f71b1683", element="0.6784901581685296-1")>】
by_name的type为:【<class ‘selenium.webdriver.remote.webelement.WebElement‘>】,value为:【<selenium.webdriver.remote.webelement.WebElement (session="d60407228c0913a1db912c04f71b1683", element="0.6784901581685296-1")>】
by_name1的type为:【<class ‘list‘>】,value为:【[<selenium.webdriver.remote.webelement.WebElement (session="d60407228c0913a1db912c04f71b1683", element="0.6784901581685296-1")>]】
by_class的type为:【<class ‘selenium.webdriver.remote.webelement.WebElement‘>】,value为:【<selenium.webdriver.remote.webelement.WebElement (session="d60407228c0913a1db912c04f71b1683", element="0.6784901581685296-2")>】
by_class1的type为:【<class ‘list‘>】,value为:【[<selenium.webdriver.remote.webelement.WebElement (session="d60407228c0913a1db912c04f71b1683", element="0.6784901581685296-2")>]】
by_tag的value为:【<selenium.webdriver.remote.webelement.WebElement (session="d60407228c0913a1db912c04f71b1683", element="0.6784901581685296-3")>】:
超链接定位a的type为:【<class ‘selenium.webdriver.remote.webelement.WebElement‘>】,value为:【<selenium.webdriver.remote.webelement.WebElement (session="d60407228c0913a1db912c04f71b1683", element="0.6784901581685296-4")>】
partialLink定位b的ype为:【<class ‘selenium.webdriver.remote.webelement.WebElement‘>】,value为:【<selenium.webdriver.remote.webelement.WebElement (session="d60407228c0913a1db912c04f71b1683", element="0.6784901581685296-4")>】
Xpath定位c的ype为:【<class ‘selenium.webdriver.remote.webelement.WebElement‘>】,value为:【<selenium.webdriver.remote.webelement.WebElement (session="d60407228c0913a1db912c04f71b1683", element="0.6784901581685296-5")>】
Xpath定位d的ype为:【<class ‘selenium.webdriver.remote.webelement.WebElement‘>】,value为:【<selenium.webdriver.remote.webelement.WebElement (session="d60407228c0913a1db912c04f71b1683", element="0.6784901581685296-1")>】
<selenium.webdriver.remote.webelement.WebElement (session="d60407228c0913a1db912c04f71b1683", element="0.6784901581685296-7")>

  

原文地址:https://www.cnblogs.com/qyh0902/p/11186581.html

时间: 2024-11-11 13:35:26

Web自动化测试 四 ----- python selenium 八大元素定位的相关文章

3 Python+Selenium的元素定位方法(id、class name、name、tag name)

[环境] Python3.6+selenium3.0.2+IE11+Win7 [定位方法] 1.通过ID定位 方法:find_element_by_id('xx') 2.通过name定位 方法:find_element_by_name('xx') 3.通过class name定位 方法:find_element_by_class_name('xx') 4.通过tag name定位 方法:find_element_by_tag_name('xx') 说明:tag name在html中是标签的名字,

python+selenium:元素定位

在日常的网页源码中,我们基于元素的id去定位是最万无一失的,id在单个页面中是不会重复的.但是实际工作中,很多前端开发人员并未给每个元素都编写id属性. driver.find_element_by_id() 此时,可以基于class属性来定位元素.常见的基于class定位元素的selenium写法如下: driver.find_element_by_class_name() driver.find_element_by_css_selector() driver.find_element_by

04-selenium 八大元素定位方法

目录 selenium 八大元素定位方法 1.id 2.name 3.class name 4.tag 5.link text 6.partial link text 7.xpath 8.css selector 8.1 示例:特殊 iframe 操作 8.2 示例:特殊 Select 操作 9.总结 selenium 八大元素定位方法 对于元素的定位,WebDriver API可以通过定位简单的元素和一组元素来操作.在这里,我们需要告诉Selenium如何去找元素,以至于他可以充分的模拟用户行

Python3-Selenium自动化测试框架(四)之css元素定位

Selenium自动化测试框架(四)之css元素定位 一.css元素定位 CSS可以通过元素的id.class.标签(input)这三个常规属性直接定位到 id-->> # class-->> . 1.通过id进行定位 input#kw #kw 2.通过class进行定位 input.s_ipt .s_ipt 3.子类定位">":通过先定位父类(self),再定位self下的子类 #s_kw_wrap>#kw 4.同级定位"+":

selenium中元素定位的常用方法

一.Selenium中元素定位共有八种 id name className tagName linkText partialLinkText xpath cssSelector 其中前六种都比较简单,通过id一般可以得到一个唯一的定位,其他五种要注意元素是否唯一,如果有多个,返回的是匹配的第一个元素.下面详细讲解一下xpath和cssSelector定位. 二.xpath定位 1.通过绝对路径定位 dr.findElement(By.xpath("/html/body/div[2]/div/di

Selenium Webdriver元素定位的方式

Selenium Webdriver元素定位的方式 主要就是By类的 1.By.name() ## html代码如下: <button id="gbqfba" aria-label="Google Search" name="btnK" class="gbqfba"><span id="gbqfsa">Google Search</span></button>

Selenium+Python自动化测试实战(2)元素定位

1.Selenium2 的原理 第一篇分享简单介绍了基于Python开发的Selenium2的环境配置,这篇主要讲一下基本用法.首先讲一下Selenium2的基本原理.基本上知道了这个东西是怎么回事,我们就知道怎么去用它做自动化测试. 与Selenium和Selenium RC不同,Selenium2将浏览器原生的API封装成WebDriver API,可以直接操作浏览器页面里的元素,甚至操作浏览器本身(截屏,窗口大小,启动,关闭,安装插件,配置证书之类的),所以就像真正的用户在操作一样.其实刚

Python selenium根据class定位页面元素

在日常的网页源码中,我们基于元素的id去定位是最万无一失的,id在单个页面中是不会重复的.但是实际工作中,很多前端开发人员并未给每个元素都编写id属性.通常一段html代码如下: 1 <div class="sui-tips s-isindex-wrap sui-tips-exceedtipnews" style="display: none; width: auto;"><div class="sui-tips-arrow"

selenium+python自动化之元素定位

自动化按步骤拆分的话,可以分为四步操作:定位元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告.本篇接下来讲基本的八种元素定位方法.说的通俗一点,就是教大家找对象. 万物皆对象,所谓的对象,就是你喜欢的那个女神,她就是你的对象.既然是对象,她就有属性,比如眼睛大,头发长,皮肤白,颜值高.这些都是她的属性,每个属性又有对应的属性值,如眼睛="大",头发="长",颜值="高",对应的=后面就是它的属性的值. 同样的道