另一个问题。此代码适用于add_task
...
登录后,auth窗口关闭并使用登录密钥返回主窗口。但是我得到了这个错误:
你好
测试add_task
[远程服务器]文件:///var/folders/3w/b7rcpqfj7kl3wtv56jt99yx00000gn/T/webdriver-profile20120919-9069-1ua1lm9/extensions/fxdriver@googlecode.com/components/command_processor.js:10212:在“未知”中:找不到窗口。浏览器窗口可能已关闭。 (硒::的webdriver ::错误:: NoSuchWindowError)
require 'rubygems'
require 'test/unit'
require 'watir-webdriver'
class Login
def basic_auth(logintype,usr,pwd)
$browser.goto("http://change.com")
$browser.link(:class,'joinchange').wait_until_present
join_link = $browser.link(:class,'joinchange')
join_link.click
$browser.window(:title, 'Sign In').wait_until_present
$browser.window(:title, 'Sign In').use
if logintype == 'fb'
$browser.link(:name, 'login-facebook id=').click
$browser.text_field(:id,'email').set(usr)
$browser.text_field(:id,'pass').set(pwd)
puts 'form submit'
sleep 3
$browser.form(:id,'login_form').submit
puts 'hello world'
else
$browser.text_field(:id,'lgnId').set('changes')
$browser.text_field(:id,'pwdId').set('letmeinnow')
sleep 3
$browser.form(:name,'LoginActionForm').submit
puts 'hi there'
end
end
def add_task
puts "testing add_task"
$browser.link(:class,'nextStep').click
end
end
$browser = Watir::Browser.new
login = Login.new
login.basic_auth('test','usr','pwd')
sleep 3
login.add_task
答案 0 :(得分:1)
我认为问题在于切换到登录弹出窗口后,脚本不会切换出来。因此,在add_task尝试单击链接时,它正在尝试关闭登录弹出窗口。
在basic_auth
方法中,您希望将弹出窗口中要执行的操作作为块传递给window.use
方法。
所以你想要:
$browser.window(:title, 'Sign In').use do
if logintype == 'fb'
$browser.link(:name, 'login-facebook id=').click
$browser.text_field(:id,'email').set(usr)
$browser.text_field(:id,'pass').set(pwd)
puts 'form submit'
sleep 3
$browser.form(:id,'login_form').submit
puts 'hello world'
else
$browser.text_field(:id,'lgnId').set('changes')
$browser.text_field(:id,'pwdId').set('letmeinnow')
sleep 3
$browser.form(:name,'LoginActionForm').submit
puts 'hi there'
end
end
(请注意第一行末尾添加的do
和结尾处的额外end
。