页面对象的定位

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

原文发布于微信公众号 - Python自动化测试(wuya-python)

原文发表时间:2015-07-22

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏中国白客联盟

js之获取浏览器保存的账号密码(二)

正常情况下,当用户登录系统的时候保存了登录的账号密码的话,我们是可以利用js获取到他的表单里面的值发送过来,达到获取到他的账号密码进行下一步渗透。

9194
来自专栏前端小叙

一分钟理清Vue-cli 代码构建步骤。

1、 $ npm install vue -cli -g $ vue init webpack project-name $ cd project-name...

32610
来自专栏Play & Scala 技术分享

[Play-Scala-2.2.1] 接收jQuery Post的原始字符串请求

3258
来自专栏静默虚空的博客

Intellij IDEA 使用小结

快捷键 核心快捷键 IntelliJ IDEA 作为一个以快捷键为中心的 IDE,为大多数操作建议了键盘快捷键。在这个主题中,您可以找到最不可缺少的列表,使 I...

3286
来自专栏杨龙飞前端

bootstrap file input 官方文档翻译

4937
来自专栏云加头条

如何开通微信公众号同步?(浏览器打开)

截屏小Tip:可同时按住开机键+home键,完成截屏

70110
来自专栏Golang语言社区

go语言读取csv文件并输出的方法

本文实例讲述了go语言读取csv文件并输出的方法。分享给大家供大家参考。具体实现方法如下: package main import ( "encodi...

3798
来自专栏自由而无用的灵魂的碎碎念

去掉windows8.1鸡肋的开始按钮

可以使用我分享的链接下载startisgone: http://download.csdn.net/detail/wangallan/8972885

1002
来自专栏Angular&服务

cordova扫描二维码

1743
来自专栏Android知识点总结

html5常用控件

6532

扫码关注云+社区

领取腾讯云代金券