我收到错误
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运行测试时,第一次单击操作似乎无法选择"使用我的PayPal帐户付款"跨度。我不确定为什么它在这一步没有失败。如果我在失败后手动点击该链接,我会看到密码字段没有填充,所以在第四行之前似乎出现了问题。
答案 0 :(得分:2)
即使进行了when_present
次调用,如果它在irb中一步一步地工作,这很可能是竞争条件,但在直接一起运行时则不然。在调试时,在问题步骤之前放置一个(长时间)睡眠通常很有用,看看你是否遇到了竞争条件。如果睡眠修复它,那么你就知道问题是什么,只需要在点击之前找出正确的事情。
另一种可能性是,这可能是浏览器处于"活动窗口中的问题。在操作系统中很重要。 (无论如何,命令应该以相同的方式工作,但事实并非如此)。
此外,使用Chrome运行测试以查看是否存在相同问题也有助于排查问题。
如果这些都不起作用,请使用您正在与之互动的网址或html更新您的问题。
另一方面,我很惊讶嵌套when_present
& when_enabled
有效。 when enabled
可能应该包含present?
作为前提条件,我会考虑这样做。