页面对象的定位

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()

原文地址:https://www.cnblogs.com/weikunzz/p/6710587.html