标签:NPU 首页 数字 inpu rop ntb lan check property
前提条件:先要引入webdriver模块,创建一个Chrom浏览器对象,以及打开一个网页(以百度为例)。
1 from selenium import webdriver 2 3 driver = webdriver.Chrome() 4 5 driver.get(‘http://www.baidu.com‘)
driver.find_element_by_id(‘kw‘)
备注:
driver.find_elements_by_name(‘wd‘) # 返回的是列表,找出来的元素不一定是唯一的
driver.find_element_by_name(‘wd‘) # 只会返回找到的第一个元素
实例:
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,表示把一个方法变为一个属性,叫做动态属性
d = driver.find_element_by_class_name(‘s_btn‘) d1 = driver.find_elements_by_class_name(‘s_btn‘)
a = driver.find_element_by_link_text(‘新闻‘)
b = driver.find_element_by_partial_link_text(‘新‘) # 通过一部分查找
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‘)]
元素构成:
//相对定位[谓语条件(@class=‘‘)]/子元素tag[谓语条件]
轴定位/轴运算:啰嗦复古的写法,但是更加灵活。
通过相对路径定位
//parent::form[@id=‘form‘]
//轴关系::元素类型[谓语条件]
//input[@name=‘ie‘]//parent::form[@id=‘form‘]
//input[@name=‘ie‘]//parent::form[@class, ‘value‘]
*表示 通配符
暂时没总结
"""
_*_ 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为:【<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")>
Web自动化测试 四 ----- python selenium 八大元素定位
标签:NPU 首页 数字 inpu rop ntb lan check property
原文地址:https://www.cnblogs.com/qyh0902/p/11186581.html