页面对象的定位
2016-06-15 14:31
176 查看
2
对象的定位
2.1
定位单个元素
在自动化的测试中,对象元素的定位和操作是自动化的核心部分,但是对象是定位是自动化的基础,在对象的基础上,才可以形成对对象的操作。
webdriver提供了元素定位的方法,常见的有如下的几种:
id
name
class name
tag name
link text
partial link text
xpath
css selector
分别对应pythonwebdriver的单个方法为;
find_element_by_id()
find_element_by_name()
find_element_by_class_name()
find_element_by_tag_name()
find_element_by_link_text()
find_element_by_partial_link_text()
find_element_by_xpath()
find_element_by_css_selector()
已百度首页的搜索输入框为案例,在搜索输入框输入appium,来分别说明python
webdriver的元素的定位,见百度首页搜索输入框的源码截图:
id/name/classname/xpath/css selector定位方法为:
#通过id定位
driver.find_element_by_id('kw').send_keys('appium')
#通过name定位
driver.find_element_by_name('wd').send_keys('appium')
#通过class
name定位
driver.find_element_by_class_name('s_ipt').send_keys('appium')
#通过xpath定位
driver.find_element_by_xpath(".//*[@id='kw']").send_keys('appium')
#通过css
selector定位
driver.find_element_by_css_selector('#kw').send_keys('appium')
link text/partiallink的定位百度首页“新闻”的方法为:
#通过link
text定位
driver.find_element_by_link_text(u'新闻').click()
#通过partial
link text定位
driver.find_element_by_partial_link_text(u'闻').click()
2.2
定位一组元素
在浏览器特定的操作中,有时候需要定位一组对象,如下拉框的等,webdriver提供了定位一组元素的方法find_elements。定位一组对象的方法与定位单个对象的方法雷同,见如下:
find_elements_by_id()
find_elements_by_name()
find_elements_by_class_name()
find_elements_by_tag_name()
find_elements_by_link_text()
find_elements_by_partial_link_text()
find_elements_by_xpath()
find_elements_by_css_selector()
定位一组对象使用的场景一般为:
1、批量操作
2、另外一种是选取一组对象,在这组对象中定位到具体的对象
2.3
浏览器的操作
如上的代码示例见如下:
#coding:utf-8
from selenium import webdriver
from time import sleep
driver=webdriver.Firefox()
#设置浏览器高宽
driver.set_window_size(500,600)
#浏览器最大化
driver.maximize_window()
driver.implicitly_wait(30)
#访问百度
driver.get('http://www.baidu.com')
#刷新
driver.refresh()
#访问bing
driver.get('http://www.bing.com')
#后退
driver.back()
#前进
driver.forward()
#获取浏览器的title
print driver.title
#获取浏览器的URL
print driver.current_url
#获取浏览器当前页的源码
print driver.page_source
#获取当前执行的浏览器
print driver.name
driver.quit()
2.4 WebElement接口的常用方法
如上的代码示例如下:
#coding:utf-8
from seleniumimport webdriver
from timeimport sleep
driver=webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get('http://www.baidu.com')
login=driver.find_element_by_id('su')
#获取元素尺寸
print login.size
#获取属性住
printlogin.get_attribute('type')
#元素是否可见
print u'是否可见:',login.is_displayed()
#元素是否可勾选
print u'是否可勾选:',login.is_selected()
#元素是否可编辑
print u'是否可编辑:',login.is_enabled()
driver.quit()
2.5
百度登录实例
已百度首页的百度登录,退出,来完整的进行演示元素的定位以及api部分的使用,见如下的代码:
#coding:utf-8
from seleniumimport webdriver
from timeimport sleep
driver=webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get('http://www.baidu.com')
#点击登录按钮
driver.find_element_by_link_text(u'登录').click()
#输入账号
driver.find_element_by_id('TANGRAM__PSP_8__userName').send_keys('baidu account')
#输入密码
driver.find_element_by_id('TANGRAM__PSP_8__password').send_keys('account password')
#取消自动登录
driver.find_element_by_id('TANGRAM__PSP_8__memberPass').click()
#点击登录按钮
driver.find_element_by_id('TANGRAM__PSP_8__submit').click()
#获取昵称
niCheng=driver.find_element_by_xpath(".//*[@id='s_username_top']/span")
text=niCheng.text
niCheng.click()
#点击退出按钮
driver.find_element_by_xpath(".//*[@id='s_user_name_menu']/div/a[5]").click()
#点击确定按钮
driver.find_element_by_xpath(".//*[@id='tip_con_wrap']/div[3]/a[3]").click()
sleep(2)
assert text in u'清晨无涯'
driver.quit()
对象的定位
2.1
定位单个元素
在自动化的测试中,对象元素的定位和操作是自动化的核心部分,但是对象是定位是自动化的基础,在对象的基础上,才可以形成对对象的操作。
webdriver提供了元素定位的方法,常见的有如下的几种:
id
name
class name
tag name
link text
partial link text
xpath
css selector
分别对应pythonwebdriver的单个方法为;
find_element_by_id()
find_element_by_name()
find_element_by_class_name()
find_element_by_tag_name()
find_element_by_link_text()
find_element_by_partial_link_text()
find_element_by_xpath()
find_element_by_css_selector()
已百度首页的搜索输入框为案例,在搜索输入框输入appium,来分别说明python
webdriver的元素的定位,见百度首页搜索输入框的源码截图:
<input id="kw" class="s_ipt" autocomplete="off" maxlength="255" value="" name="wd"> |
#通过id定位
driver.find_element_by_id('kw').send_keys('appium')
#通过name定位
driver.find_element_by_name('wd').send_keys('appium')
#通过class
name定位
driver.find_element_by_class_name('s_ipt').send_keys('appium')
#通过xpath定位
driver.find_element_by_xpath(".//*[@id='kw']").send_keys('appium')
#通过css
selector定位
driver.find_element_by_css_selector('#kw').send_keys('appium')
link text/partiallink的定位百度首页“新闻”的方法为:
#通过link
text定位
driver.find_element_by_link_text(u'新闻').click()
#通过partial
link text定位
driver.find_element_by_partial_link_text(u'闻').click()
2.2
定位一组元素
在浏览器特定的操作中,有时候需要定位一组对象,如下拉框的等,webdriver提供了定位一组元素的方法find_elements。定位一组对象的方法与定位单个对象的方法雷同,见如下:
find_elements_by_id()
find_elements_by_name()
find_elements_by_class_name()
find_elements_by_tag_name()
find_elements_by_link_text()
find_elements_by_partial_link_text()
find_elements_by_xpath()
find_elements_by_css_selector()
定位一组对象使用的场景一般为:
1、批量操作
2、另外一种是选取一组对象,在这组对象中定位到具体的对象
2.3
浏览器的操作
浏览器最大化 | Driver.maximize_window() |
设置浏览器的高,宽 | Driver.set_window_size() |
控制浏览器前进 | Driver.forward() |
控制浏览器后退 | Driver.back() |
浏览器刷新 | Driver.refersh() |
获取浏览器的title | Driver.title |
获取当前网页的url | Driver.current_url |
获取当前页面的源码 | Driver.page_source |
获取执行浏览器名称 | Driver.name |
#coding:utf-8
from selenium import webdriver
from time import sleep
driver=webdriver.Firefox()
#设置浏览器高宽
driver.set_window_size(500,600)
#浏览器最大化
driver.maximize_window()
driver.implicitly_wait(30)
#访问百度
driver.get('http://www.baidu.com')
#刷新
driver.refresh()
#访问bing
driver.get('http://www.bing.com')
#后退
driver.back()
#前进
driver.forward()
#获取浏览器的title
print driver.title
#获取浏览器的URL
print driver.current_url
#获取浏览器当前页的源码
print driver.page_source
#获取当前执行的浏览器
print driver.name
driver.quit()
2.4 WebElement接口的常用方法
返回元素的尺寸 | Driver.size() |
获取元素的文本 | Driver.text |
获取属性值 | Driver.get_attribute() |
设置改元素是否可见 | Driver.is_displayed |
复选框或单选框是否勾选 | Driver.is_selected() |
存储input编辑框是否编辑 | Driver.is_enabled() |
清空操作 | Driver.clear() |
点击操作 | Driver.click() |
输入操作 | Driver.send_keys() |
#coding:utf-8
from seleniumimport webdriver
from timeimport sleep
driver=webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get('http://www.baidu.com')
login=driver.find_element_by_id('su')
#获取元素尺寸
print login.size
#获取属性住
printlogin.get_attribute('type')
#元素是否可见
print u'是否可见:',login.is_displayed()
#元素是否可勾选
print u'是否可勾选:',login.is_selected()
#元素是否可编辑
print u'是否可编辑:',login.is_enabled()
driver.quit()
2.5
百度登录实例
已百度首页的百度登录,退出,来完整的进行演示元素的定位以及api部分的使用,见如下的代码:
#coding:utf-8
from seleniumimport webdriver
from timeimport sleep
driver=webdriver.Firefox()
driver.maximize_window()
driver.implicitly_wait(30)
driver.get('http://www.baidu.com')
#点击登录按钮
driver.find_element_by_link_text(u'登录').click()
#输入账号
driver.find_element_by_id('TANGRAM__PSP_8__userName').send_keys('baidu account')
#输入密码
driver.find_element_by_id('TANGRAM__PSP_8__password').send_keys('account password')
#取消自动登录
driver.find_element_by_id('TANGRAM__PSP_8__memberPass').click()
#点击登录按钮
driver.find_element_by_id('TANGRAM__PSP_8__submit').click()
#获取昵称
niCheng=driver.find_element_by_xpath(".//*[@id='s_username_top']/span")
text=niCheng.text
niCheng.click()
#点击退出按钮
driver.find_element_by_xpath(".//*[@id='s_user_name_menu']/div/a[5]").click()
#点击确定按钮
driver.find_element_by_xpath(".//*[@id='tip_con_wrap']/div[3]/a[3]").click()
sleep(2)
assert text in u'清晨无涯'
driver.quit()
相关文章推荐
- jsp在浏览器中打开错误之一:路径输错
- ASP.NET内部原理(HttpHandler和HttpModule)
- Android自定义视图 View 之重要知识点 Path 详解
- CygWin 常用命令
- iOS网络——NSURLCache设置网络请求缓存
- 四大组件之Service(四)-Service的线程、工作线程、权限及系统Service
- 有容云:梁胜-如何让Docker容器在企业中投产(下)
- .net MVC 下载文件乱码问题解决方案
- 数据库配置
- GLSurfaceView的上层控件显示问题
- Eclipse常用快捷键
- swift 类型转换
- 可用IP查询
- 数据挖掘十大经典算法(详解)
- linux下搭建能同时接收UDP和TCP连接的socket并发多线程服务器
- /usr/include/gnu/stubs.h:7:27: 致命错误:gnu/stubs-32.h:没有那个文件或目录
- android手机推送视频到服务端
- VS调试异常代码 HRESULT:0x80070057 (E_INVALIDARG)解决方法
- activemq的两种基本通信方式的使用及总结
- 合并多sheet 带sheet名