Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 表格提交后的watir_Ruby_Webdriver_Watir_Watir Webdriver - Fatal编程技术网

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,除非脚本在提交操作期间中断,并且没有继续…不,操作正常。我可以看到登录链接变为注销链接。代码有问题。可能是我没有正确解释好吧,浏览器源代码或页面链接在这种情况下会很有帮助。正如本文所述,除非脚本在提交操作之前或提交操作时中断,否则没有理由失败。