ruby webdriver

前言

     Watir Webdriver是用ruby操作webdriver的很酷的方式,通常被用來做一些rails app的測試。

Example

     下面的示例是一個網站的登錄示例:
require 'watir-webdriver'
b = Watir::Browser.new
b.driver.manage.window.maximize
b.goto "http://xx.com"
b.link(:text => 'Create Account').click
b.text_field(:id => 'signupEmail').focus!.set "[email protected]"
b.text_field(:id => 'signupPassword').focus!.set "1234"
b.text_field(:id => 'passwordConfirm').focus!.set "1234"
b.checkbox(:id=> 'notifyOptin').focus!.set true
b.button(:id => 'signupSubmit').focus!.click
# or you can use:
# b.send_keys :enter
b.text.include? 'Welcome to XX website'
b.close

      上面的示例中,很多text_field或button等元素使用了focus!方法,這是因爲webdriver無法和瀏覽器中未顯示的元素交互,否則會發生異常,當你擁有一個很長的列表在當前瀏覽器窗口中無法顯示時,如果去和未顯示的列表項交互就會發生這種異常。解決辦法是調用元素的focus方法,focus方法會將該元素滾動到視野中,但focus方法默認返回nil,如果調用該方法多次就不是一個hacky way。所以需要爲webdriver打個補丁,添加一個focus!方法:
class Watir::Element
	def focus!
		self.focus unless self.visible?
		self
	end
end

      有的網站登錄會使用一個frame來呈現登錄窗口,webdriver可以很方便地和frame交互:
b.frame(:id => "content_ifr").text_field(:id=>'signinEmail').set "[email protected]"
b.frame(:id => "content_ifr").text_field(:id=>'signinEmail').set "234"

    更多html元素的交互請看elements
    發送特定的按鍵:
b.send_keys :enter
b.element.send_keys [:control, 'a'], :backspace
b.element.click(:shift, :control)



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