您的位置:首页 > 其它

页面对象的定位

2016-06-15 14:31 190 查看
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的元素的定位,见百度首页搜索输入框的源码截图:
<input
id="kw"
class="s_ipt"
autocomplete="off"
maxlength="255"
value=""
name="wd">
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
浏览器的操作

浏览器最大化
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()
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: