【问题标题】:watir after form submit表单提交后等待
【发布时间】:2012-09-19 18:46:54
【问题描述】:

我是 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'

最多登录工作。我看到表单提交并且表单已提交。但不能更进一步。看不到“hello world”

【问题讨论】:

  • 无论是哪个域,您都可以查看 robots.txt 文件以了解他们的自动化政策。 facebook.com/robots.txt
  • 是否有用户可用的控件来提交表单?也许提交按钮不仅仅是提交表单(即首先调用其他一些函数)?

标签: ruby webdriver watir watir-webdriver


【解决方案1】:

我认为导致问题的原因是 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
=> []

【讨论】:

    【解决方案2】:

    假设您对所有命令都使用新行(与您粘贴的代码块不同),我的第一个想法是除非您打开了缓冲区同步,否则控制台不会在测试结束之前显示文本输出。您是否可能没有等待脚本完成?

    将此行添加到脚本的顶部,看看是否可以解决问题。

    $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'
    

    【讨论】:

    • 只有在接受 ToS 时,您才受其约束。自动化 facebook 登录恕我直言是完全合理的。
    • 这只是为了测试我的多重身份验证,然后返回页面并进行更多测试。 $stdout.sync = true 没有做任何魔术。谢谢
    • 如果“表单提交”显示正确,则此代码没有理由不显示“hello world”,除非脚本在提交操作期间中断并且不会继续...
    • 不,操作正常。我可以看到登录链接变成了退出链接。代码有问题。可能是我解释的不对
    • 好吧,在这种情况下,浏览器源代码或页面链接会很有帮助。正如它所展示的那样,除非脚本在提交操作之前或提交操作时中断,否则应该没有理由失败。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-24
    • 2015-04-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多