zoukankan      html  css  js  c++  java
  • 页面对象的定位

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

  • 相关阅读:
    链接服务器 "(null)" 的 OLE DB 访问接口 "Microsoft.Ace.OleDb.12.0" 报错。提供程序未给出有关错误的任何信息。
    iis应用程序池 内存溢出错误 System.OutOfMemoryException
    高性能JavaScript
    HTML5介绍
    Ubuntu 16.04安装Matlab 2016b教程
    C Standard Library: 9 Signals: <signal.h>
    C Standard Library:4 Mathematical Functions: <math.h>
    C Standard Library: File Positioning Functions
    C Standard Library: Formatted Input
    C Standard Library: 2 Character Class Tests: <ctype.h>
  • 原文地址:https://www.cnblogs.com/weikunzz/p/6710587.html
Copyright © 2011-2022 走看看