zoukankan      html  css  js  c++  java
  • [ZT]Watir对WEB的操作

    转自: http://www.javaeye.com/topic/299743

    与网页交互(Interacting With a Web Page)
    当使用Watir开发测试脚本的时候,通过给网页上的对象发送消息来与之交互。

    Watir 语法(Web Application Testing in Ruby)

    # watir的安装
    watie的安装请查看 -> Ruby library的安装

    # 使用Watir工具,需要在脚本中加上
    require 'watir'

    # 创建一个IE的实例
    ie = Watir::IE.new
    或者在创建的同时直接转到页面
    ie = Watir::IE.start('http://www.text.com/')
    Watir使用start方法同时创建一个浏览器实例并转到一个页面。
    IE浏览速度
    ie.speed = :fast
    ie.speed = :slow

    # 页面导航
    ie.goto('http://www.text.com/')
    注: ie.goto还可以运行javascript的代码如: ie.goto("javascript: ie.document.write("Hello World");")

    # 取得当前网页的网址
    ie.url

    # 点击超链接
    ie.link(:text , "Pickaxe").click
    ie.link(:href, /http:\/\/pragmaticprogrammer\.com/).click
    ie.link(:name => 'foo', :index => 1).click

    # 超链接的uri
    ie.link(:text , "Pickaxe").href
    ie.link(:index, 1).href
    ie.link(:text => "reply", :index => 2).href

    # 超链接的文本
    ie.link(:href , /http:\/\/pragmaticprogrammer\.com/).text

    对应的HTML代码为:
    <a href='http://pragmaticprogrammer.com/titles/ruby/'>Pickaxe</a>

    # img标签
    ie.image(:name, 'image').src
    ie.image(:index, 2).src

    对应的HTML代码为:
    <img name = img src='http://pragmaticprogrammer.com/titles/ruby/top.gif'>
    <img name = img src='http://pragmaticprogrammer.com/titles/ruby/head.gif'>

    # 设置复选框
    ie.checkbox(:name, "checkme").set
    ie.checkbox(:name, "checkme", "1").set # 使用name和value属性设置复选框

    # 清除复选框
    ie.checkbox(:name, "checkme").clear
    ie.checkbox(:name, "checkme", "1").clear # 使用name和value属性清除复选框

    对应的HTML代码为:
    <input type = "checkbox" name = "checkme" value = "1">

    # 设置单选框
    ie.radio(:name, "clickme").set
    ie.radio(:name=>'clickme', :index=>2).set
    ie.radio(:name, "clickme", "1").set # 使用name和id属性设置单选框

    # 使用name属性清除单选框
    ie.radio(:name, "clickme").clear
    ie.radio(:name, "clickme", "1").clear # 使用name和id属性清除单选框

    对应的HTML代码为:
    <input type = "radio" name = "clickme" id = "1">
    <input type = "radio" name = "clickme" id = "2">

    # 设置下拉框
    ie.select_list(:name, "selectme").select('Python') # 使用text属性和值来设置下拉框
    ie.select_list(:name, "selectme").select_value('2') # 使用value属性和值来设置下拉框

    # 使用name属性和值来清除下拉框
    ie.select_list(:name, "selectme").clearSelection

    对应的HTML代码为:
    <select name = "selectme">
    <option value = 1>Ruby
    <option value = 2>Java
    <option value = 3>Python
    <option value = 4>C
    </select>

    # 文本的框设置
    ie.text_field(:name, "typeinme").set("Watir World")

    # 清空文本输入框
    ie.text_field(:name, "typeinme").clear

    对应的HTML代码为:
    <input type = "text" name = "typeinme">

    # 通过值或name属性点击button
    ie.button(:value, "Click Me").click
    ie.button(:name, "clickme").click

    对应的HTML代码为:
    <input type = "button" name = "clickme" value = "Click Me">

    # 通过值或name属性点击Submit
    ie.button(:value, "Submit").click
    ie.button(:type, "Submit").click
    ie.button(:name, "Submit").click

    对应的HTML代码为:
    <form. action = "submit" name = "submitform" method="post">
    <input type = "submit" value = "Submit">
    </form>

    # 表单中的图片按钮
    ie.button(:name, "doit").click

    对应的HTML代码为:
    <form. action = "submit" name = "doitform" method="post">
    <input type="image" src = "images/doit.gif" name = "doit">
    </form>

    # 没有按钮的表单
    ie.form(:name, "loginform").submit # 通过name,action以及method属性来提交表单
    ie.form(:action, "login").submit
    对应的HTML代码为:
    <form. action = "login" name = "loginform" method="get">
    <input name="username" type="text">
    </form>

    # 框架
    ie.show_frames可以打印出当前页面框架的数量和名称
    Watir允许通过名称属性来访问框架,如ie.frame("menu")
    如果要访问menu框架中的一个超链接,可以
    ie.frame("menu").link(:text, "Click Menu Item").click

    # 嵌套框架
    ie.frame(:name, "frame1").form(:name, 'form1')

    # 新窗口
    一些Web应用会弹出新窗口或打开一个新窗口,可以使用attach方法来访问并控制新窗口。通过标示新窗口的URL或者title来访问。
    ie2 = Watir::IE.attach(:url, 'http://www.text.com/')
    ie3 = Watir::IE.attach(:title, 'Test New Window')
    也可以使用正则表达式
    ie4 = Watir::IE.attach(:title, /Test New/)
    注意:不要把新窗口分配到你的ie变量,最好给新窗口一个不同的名字

    # 访问Table元素:
    t = $ie.table(:id,"data")
    t = Table.new($ie,:id,"data")
    t = $ie.table[1]

    # tr,td元素
    tr = ie.row(:id,"title")
    tr = TableRow.new(ie,:id,"title")

    td = ie.cell(:id,"name")
    td = TableCell.new(ie,:id,"name")

    # Watir中Table,TableBody,TableRow,TableCell这几个类,都提供了一个索引方法"[](index)"来定位其下一层的子元素对象,该方法为实例方法,"index"为传入的参数,索引值从1开始,而非从0开始。
    用法如下:
    以table的第一行,第一个元素为例:
    tr1 = t.[](1)
    td1 = tr1.[](1)
    也可以连续访问:td1 = t.[](1).[](1)
    如果td中还有其他元素,可以通过td的实例方法直接访问,以checkbox为例:
    cb = td1.checkbox(:id,'navigate_id').click

    对于以上所提到的对象,都是从Element继承而来,所以click,enabled?,exists?,fireEvent,flash,focus等方法都直接可以使用。
    如果你的td元素定位准确了,且鼠标响应事件没有错误的话,那么应该能看到点击后的效果。
    建议多查一下Watir的API Reference http://wtr.rubyforge.org/rdoc/

    代码如下:
    t = ie.table(:id,"CoolMenu2menutable")
    td_logout=t.[](1).[](16)

    先找到Table,再索引TR,再索引到TD

    # 运行Ruby时不显示browser方法
    运行Ruby程序文件时在后面加 "-b"
    ex:
    test.rb -b
    也可以做成.bat文件
    ex: test.bat
    ruby.exe test.rb -b

    # 获取隐含对象值
    <INPUT type=hidden value="您的Email" name="field1">
    方法:values = ie.hidden(:name, 'field1').value

    # 获取窗口对象
    方法1: ie2 = Watir::IE.attach(:url,'http://www.google.cn/')   #根据URL获取
    方法2: ie3 = Watir::IE.attach(:title,'Google')                #根据窗口标题获
    方法3: ie4 = Watir::IE.attach(:title, /google.cn/)              #正则表达式匹配获取

  • 相关阅读:
    SDUT 2143 图结构练习——最短路径 SPFA模板,方便以后用。。 Anti
    SDUT ACM 1002 Biorhythms 中国剩余定理 Anti
    nyist OJ 119 士兵杀敌(三) RMQ问题 Anti
    SDUT ACM 2157 Greatest Number Anti
    SDUT ACM 2622 最短路径 二维SPFA启蒙题。。 Anti
    二叉索引树 区间信息的维护与查询 Anti
    SDUT ACM 2600 子节点计数 Anti
    UVA 1428 Ping pong 二叉索引树标准用法 Anti
    2010圣诞Google首页效果
    Object
  • 原文地址:https://www.cnblogs.com/forward/p/1456461.html
Copyright © 2011-2022 走看看