| | 137 | |
| | 138 | - 登录论坛是一个比较糟糕的例子 , 如果像这样写测试用例的话,依赖页面元素,这样对于经常修改的页面来说,测试用例的编辑就是一个灾难 |
| | 139 | {{{ |
| | 140 | #测试代码也需要重构,第一版重构 |
| | 141 | require 'rubygems' |
| | 142 | require 'selenium-webdriver' |
| | 143 | require 'iconv' |
| | 144 | class String |
| | 145 | def to_gbk |
| | 146 | Iconv.iconv("GBK//IGNORE","UTF-8//IGNORE",self).to_s |
| | 147 | end |
| | 148 | end |
| | 149 | #登录页面模型 |
| | 150 | class LoginPage |
| | 151 | |
| | 152 | attr_reader :url |
| | 153 | |
| | 154 | def initialize driver , url |
| | 155 | @driver = driver |
| | 156 | @url = url |
| | 157 | end |
| | 158 | |
| | 159 | def open |
| | 160 | @driver.navigate.to @url |
| | 161 | self |
| | 162 | end |
| | 163 | |
| | 164 | def login_as username , passpord |
| | 165 | @driver.find_element(:name, 'username').send_keys(username) |
| | 166 | @driver.find_element(:name, 'password').send_keys(passpord) |
| | 167 | @driver.find_element(:id => 'loginform').find_element(:tag_name => 'a').click |
| | 168 | end |
| | 169 | |
| | 170 | def logout |
| | 171 | @driver.find_element(:xpath => %Q{//div[@class='iptArea']//a[3]} ).click |
| | 172 | end |
| | 173 | |
| | 174 | def close |
| | 175 | @driver.close |
| | 176 | end |
| | 177 | |
| | 178 | end |
| | 179 | |
| | 180 | dr = Selenium::WebDriver.for :ie |
| | 181 | url = "http://itbbs.pconline.com.cn/mobile/f587012.html" |
| | 182 | page = LoginPage.new dr , url |
| | 183 | page.open |
| | 184 | page.login_as '3edc4rfv' , '123456' |
| | 185 | page.logout |
| | 186 | page.close |
| | 187 | }}} |