无法使用Watir webdriver、Firefox、PayPal沙盒和PayPal找到元素

无法使用Watir webdriver、Firefox、PayPal沙盒和PayPal找到元素,paypal,rspec,watir,watir-webdriver,Paypal,Rspec,Watir,Watir Webdriver,我发现了错误 Watir::Exception::UnknownObjectException: unable to locate element, using {:id=>"submitLogin", :tag_name=>"input"} from /Users/ktobo/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/ gems/watir-webdriver-0.9.1/lib/watir-webdriver/elements/ele

我发现了错误

Watir::Exception::UnknownObjectException: unable to locate element, using 
{:id=>"submitLogin", :tag_name=>"input"} 
from /Users/ktobo/.rbenv/versions/2.2.3/lib/ruby/gems/2.2.0/
gems/watir-webdriver-0.9.1/lib/watir-webdriver/elements/element.rb:536:in 
`assert_element_found'
在Firefox上使用Watir webdriver运行Rspec测试时

# select "Pay with my PayPal account"
@browser.span(:class, 'buttonAsLink').when_present.click
@browser.text_field(:id, 'login_email').when_present(15).set(hsh[:email])
@browser.text_field(:id, 'login_password').when_present(15).set(hsh[:password])
@browser.input(:id, 'submitLogin').when_present.when_enabled.click
@browser.input(:id, 'continue').when_present.click
如果我在控制台中一个接一个地执行这些步骤,一切都很好。使用run.rb运行测试时,第一次单击操作似乎无法选择“使用我的贝宝帐户付款”范围。我不知道为什么这一步没有失败。如果我在失败后手动单击该链接,我会看到密码字段没有填充,因此在第四行之前似乎出现了一些错误

  • 即使是
    when_present
    调用,如果它在irb中一步一步地工作,而不是直接一起运行,则很可能是一种竞争条件。在调试时,在问题步骤之前进行(长时间的)睡眠通常很有用,只是为了看看您是否遇到了竞争条件。如果睡眠解决了这个问题,那么你就知道问题出在哪里了,只需要在点击之前找出正确的等待方法

  • 另一种可能性是,如果浏览器位于操作系统的“活动窗口”中,这可能是一个问题。(不管怎样,命令应该以同样的方式工作,但情况并非总是如此)

  • 此外,使用Chrome运行测试以查看是否存在相同的问题也有助于排除故障

  • 如果这些都不起作用,请使用url或与之交互的html更新您的问题


    另一方面,我感到惊讶的是,当出现时嵌套
    ,\u启用时嵌套
    <代码>启用时
    可能应该包括
    当前?
    作为先决条件,我会考虑这样做

    加上长时间的睡眠,我发现了这个问题。选择span
    按钮链接
    可在两种付款方式之间切换。我需要选择div
    id=“method paypal”
    ,无论当前选择的是哪个div
    id=“method paypal”
    还是
    id=“method cc”
    ,该选项都有效。当_启用时,我也切换到只运行正常的