自动化测试元素定位
大家好,我是bug郭,一名双非科班的在校大学生。对C/JAVA、数据结构、Spring系列框架、Linux及MySql、算法等领域感兴趣,喜欢将所学知识写成博客记录下来。 希望该文章对你有所帮助!如果有错误请大佬们指正!共同学习交流
作者简介:
- CSDN java领域新星创作者blog.csdn.net/bug…
- 掘金LV3用户 juejin.cn/user/bug…
- 阿里云社区专家博主,星级博主,developer.aliyun.com/bug…
- 华为云云享专家 bbs.huaweicloud.com/bug…
元素定位
对象定位是自动化测试脚本的核心,要想操作一个对象,我们要想拿到这个对象,而一个对象就和人一样有各种特征属性:我们可以通过一个人的姓名,身份证号,住址找到这个人!而我们html元素也一样!
- id
- name
- class name
- link text
- partial link text
- tag name
- xpath
- css selector
通过上面的属性我们都可以定位到一个元素!
但是需要注意的是我们要获取的对象有该属性,并且属性值唯一才可进行定位!
通过多种定位方式对百度的输入框进行定位!
# 多种定位方式定位到百度的输入框!
import time
from selenium import webdriver
# 拿到谷歌的驱动
driver = webdriver.Chrome()
# 使浏览器窗口最大化
driver.maximize_window()
# 打开百度的url
driver.get('https://www.baidu.com/')
time.sleep(3)
# 多种方式定位到百度输入框!
# 1.通过id进行定位
driver.find_element_by_id('kw').send_keys('鸡')
time.sleep(1)
# 2.通过name进行定位
driver.find_element_by_name('wd').send_keys('你')
time.sleep(1)
# 3.通过classname进行定位
driver.find_element_by_class_name('s_ipt').send_keys('太')
time.sleep(1)
# 4.通过css进行定位
driver.find_element_by_css_selector('#kw').send_keys('美')
time.sleep(1)
# 5.通过xpath进行定位
driver.find_element_by_xpath('//*[@id="kw"]').send_keys('!')
time.sleep(1)
# 6.通过tag name进行定位,这里type属性不唯一所以定位失败!
#driver.find_element_by_tag_name('text').send_keys('!')
# 定位到搜索按钮然后会车
driver.find_element_by_id('su').click()
time.sleep(3)
# 关闭浏览器并且关闭webdriver连接
driver.quit()
id
id
是页面元素属性,一般情况下我们可以通过id
进行元素定位!如果一个元素有id
属性,那一般情况下,该id
在页面下应该是唯一的!
这是百度输入框的html代码
<input id="kw" name="wd" class="s_ipt" value="" maxlength="255" autocomplete="off">
我们通过这里的id=kw
就可以定位到元素
通过find_element_by_id('kw')
方法进行定位!
name
如果这个元素有
name
属性,并且唯一,就可以通过这个name属性进行定位
百度输入框的name属性name = wd
通过find_element_by_name('wd')
方法进行定位!
tag name/class name定位
从上面的百度输入框的定位我们可以看到一个元素不止有
name
和id
属性,还有class
和tag
(标签名)
input name="wd" class="s_ipt"
这里的input
就是一个标签名tag
我们可以通过find_element_by_tag_name('input')
进行定位,但是这里的input
标签不唯一,所以会定位失败
然后这里的class="s_ipt"
s_ipt
就是一个class name 可以通过find_element_by_class_name('s_ipt')
进行定位
link text
有时候不是一个输入框也不是一个按钮,而是一个
文字链接
,我们可以通过链接内容,也就是link text
来定位。需要注意的是链接内容必须这个页面唯一,否则会报错!
'''
通过 link text进行定位!
'''
from selenium import webdriver
import time
# 获取到谷歌的驱动
drier = webdriver.Chrome()
# 打开百度的url
drier.get('http://www.baidu.com/')
time.sleep(3)
# 通过link text定位到 新闻 元素!
drier.find_element_by_link_text('新闻').click()
time.sleep(3)
# 关闭浏览器和驱动!
drier.quit()
- partial link text
通过文字链接的部分内容进行定位!就类似于模糊匹配!但是必须匹配结果唯一!否则定位失败!
from selenium import webdriver
import time
# 通过partial link text 文字链接部分内容进行匹配定位元素
driver = webdriver.Firefox()
driver.maximize_window()
driver.get('http://baidu.com/')
time.sleep(1)
# 通过partial_link_text对hao123进行定位!
driver.find_element_by_partial_link_text('1').click()
time.sleep(3)
driver.quit()
- 点赞
- 收藏
- 关注作者
评论(0)