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

python selenium 八大元素定位方法

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

1 from selenium importwebdriver2

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 :841195863@qq.com

@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为:【】,value为:【】

by_name的type为:【】,value为:【】

by_name1的type为:【】,value为:【[]】

by_class的type为:【】,value为:【】

by_class1的type为:【】,value为:【[]】

by_tag的value为:【】:

超链接定位a的type为:【】,value为:【】

partialLink定位b的ype为:【】,value为:【】

Xpath定位c的ype为:【】,value为:【】

Xpath定位d的ype为:【】,value为:【】

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值