sahi自動化環境搭建

一、介紹

sahi 運行爲一個代理服務器,並通過注入 JavaScript 來訪問 Web 頁面中的元素。

http://www.ibm.com/developerworks/cn/web/1403_yangxb_sahi/index.html

官網:http://sahipro.com/docs/using-sahi/quick-tutorial.html


二、環境搭建

1. 安裝jdk   http://jingyan.baidu.com/album/6dad5075d1dc40a123e36ea3.html?picindex=1

http://javax2000.blog.sohu.com/82015086.html  jvm 安裝配置以及工作原理  這個上面關於jdk,jvm的解釋說明挺好的,mark


JDK需要安裝5或6, 之前裝的不是這個版本,裝netbeans6.9 無法打開,會停在“正在裝入緩存”, 然後就消失什麼都沒有了,安裝netbeans6.5時提示的“在此計算機中找不到 Java SE Development Kit (JDK),需要 JDK 6 或 JDK 5 才能安裝 NetBeans IDE。請確保正確安裝了 JDK,然後重新運行安裝程序。“


2. 安裝sahi

服務 : http://sourceforge.net/projects/sahi/?source=directory 下載安裝就好

客戶端:

gem install sahi文件

gem install win32-process文件


3. 搭建ruby環境

http://wenku.baidu.com/link?url=nC563YUrqI39vBVqQeC33Jt6WuK7TS0sPWkxxpaZQHNdgOJY1-95fqVLv5xe5oM0ofEBbXdid6EnCvwgd7bH3sbBMoYqEOGrLBcf_PY6JUa


4. 編譯器 netbeans

注netbeans 7 以上不支持ruby

我安裝的是netbeans6.9.1


三、示例

<span style="font-size:18px;">require 'rubygems'
require 'test/unit'   
require "sahi"


class SahiDriverTest < Test::Unit::TestCase        # Test::Unit::TestCase   ruby 單元測試框架
  def setup
    @browser = init_browser()
    @browser.open
  end

  def teardown
    if @browser
      @browser.close
    end
  end

  def init_browser()
    @@browser_path = "C:\\Program Files (x86)\\Internet Explorer\\iexplore.exe"
    @@browser_option = "-noframemerging"
    return Sahi::Browser.new(@@browser_path,@@browser_option)
  end

  def test_baidu()
    @browser.navigate_to("http://www.baidu.com")
    @browser.textbox("kw").value = "haha"
    @browser.submit("su").click
  end
end</span>


四、運行上述示例,guid報錯, 解決方法如下

http://blog.csdn.net/elvis_gao/article/details/8588209


五、修改sahi方法

要求clib.js 與 elementStub.rb中名稱一致


## clib.js與elementStub.rb中_clickpath名稱相對應,修改clib.js代碼後需要重啓sahi才起作用

## clib.js
Sahi.prototype._checkpath = function(el,Litem) {
    try {
        last_el = _sahi._expand(el,Litem);
        return true;
    }
    catch(e) {
        return false;
    }
};

## elementStub.rb  注:treeview爲自己封裝的控件
treeview.rb
def checkpath(path)
    return @browser.fetch("_sahi._checkpath(#{@treeview.to_s()}, #{Utils.quoted(path)})")
end


## 調用
p @browser.treeview("MainDeptTree").checkpath("單位名稱/工作總結05/北京分公司")


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章