我是WATIR + Ruby的新手。 我想在登录这样的表格后继续测试
browser.link(:name, 'login-facebook id=').click
browser.text_field(:id,'email').set(usr)
browser.text_field(:id,'pass').set(pwd)
puts 'form submit'
browser.form(:id,'login_form').submit
puts 'hello world'
登录工作正常。我看到表单提交和表单已提交。但不能走得更远。不要看'你好世界'
答案 0 :(得分:4)
我认为导致此问题的原因是http请求需要一些时间来加载,尝试添加类似
的内容sleep 1 until b.a(:class, "jewelButton").exists?
就在你的第5行以下。
另外,为什么不:b.button(:text, "Log In").click
代替b.form(:id,'login_form').submit
?
在irb中它可以正常工作:
irb(main):001:0>require "watir-webdriver"
=> true
irb(main):002:0>b = Watir::Browser.new :chrome
Started ChromeDriver
port=55320
version=22.0.1203.0b
log=C:\Users\your_username\chromedriver.log
=> #<Watir::Browser:0x..fc4b0180c url="chrome://newtab/" title="New Tab">
irb(main):015:0> b.goto "facebook.com"
=> "http://www.facebook.com/"
irb(main):003:0>b.text_field(:id,'email').set(usr)
=> {}
irb(main):004:0>b.text_field(:id,'pass').set(pwd)
=> {}
irb(main):005:0>puts 'form submit'
form submit
=> nil
irb(main):006:0>b.button(:text,"Log In").click
=> nil
irb(main):007:0>puts "blah blah"
blah blah
=> nil
irb(main):008:0>b.a(:class, "jewelButton").click
=> []
irb(main):010:0>b.a(:class, "jewelButton").click
=> []
答案 1 :(得分:0)
假设您为所有命令使用了新行(与您粘贴的代码块不同),我首先想到的是,除非您打开缓冲区同步,否则控制台将不会在测试结束前显示文本输出。您是否有可能不等待剧本完成?
将此行添加到脚本的顶部,看看是否能解决问题。
$stdout.sync = true
browser.link(:name, 'login-facebook id=').click
browser.text_field(:id,'email').set(usr)
browser.text_field(:id,'pass').set(pwd)
puts 'form submit'
browser.form(:id,'login_form').submit
puts 'hello world'