Ruby 表格提交后的watir
我是新来的瓦蒂尔+红宝石。 我尝试在登录到这样的表单后继续测试Ruby 表格提交后的watir,ruby,webdriver,watir,watir-webdriver,Ruby,Webdriver,Watir,Watir Webdriver,我是新来的瓦蒂尔+红宝石。 我尝试在登录到这样的表单后继续测试 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' 直到登录工作。我看到表单
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'
直到登录工作。我看到表单已提交,表单已提交。但是不能再进一步了。不要看到“hello world”假设所有命令都使用新行,而不是粘贴的代码块,我的第一个想法是,除非启用了缓冲区同步,否则在测试结束之前,控制台不会显示文本输出。您是否可能没有等待脚本完成 将这一行添加到脚本顶部,看看这是否解决了问题
$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'
假设与粘贴的代码块不同,所有命令都使用新行,我的第一个想法是,除非启用了“缓冲区同步”,否则在测试结束之前,控制台不会显示文本输出。您是否可能没有等待脚本完成 将这一行添加到脚本顶部,看看这是否解决了问题
$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'
我认为造成这个问题的原因是http请求需要一些时间来加载,请尝试
sleep 1 until b.a(:class, "jewelButton").exists?
就在你的第五行下面
还有,为什么不:b.按钮:文本,登录。单击而不是b.表单:id,'login\u form'。提交
在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
=> []
我认为造成这个问题的原因是http请求需要一些时间来加载,请尝试
sleep 1 until b.a(:class, "jewelButton").exists?
就在你的第五行下面
还有,为什么不:b.按钮:文本,登录。单击而不是b.表单:id,'login\u form'。提交
在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
=> []
对于任何一个域,您都可以查看robots.txt文件以查看其自动化策略。是否有用户可用于提交表单的控件?也许“提交”按钮的作用不仅仅是提交表单,ie会先调用其他一些函数?对于任何域,您都可以查看robots.txt文件以查看其自动化策略。是否有用户可用于提交表单的控件?也许“提交”按钮不仅仅是提交表单,ie会先调用一些其他函数?如果您接受ToS,您只会受到ToS的约束。自动化facebook登录imho是完全合理的。它只是为了测试我的多重身份验证,然后返回页面并测试更多$stdout.sync=true没有任何魔力。感谢如果表单提交显示正确,那么这段代码没有理由不显示hello world,除非脚本在提交操作期间中断,并且没有继续…不,操作正常。我可以看到登录链接变为注销链接。代码有问题。可能是我没有正确解释好吧,浏览器源代码或页面链接在这种情况下会很有帮助。如上所述,除非脚本在提交操作之前或提交操作时中断,否则此操作不应该失败。只有在接受ToS的情况下,您才受ToS的约束。自动化facebook登录imho是完全合理的。它只是为了测试我的多重身份验证,然后返回页面并测试更多$stdout.sync=true没有任何魔力。感谢如果表单提交显示正确,那么这段代码没有理由不显示hello world,除非脚本在提交操作期间中断,并且没有继续…不,操作正常。我可以看到登录链接变为注销链接。代码有问题。可能是我没有正确解释好吧,浏览器源代码或页面链接在这种情况下会很有帮助。正如本文所述,除非脚本在提交操作之前或提交操作时中断,否则没有理由失败。