无法使用Watir webdriver定位元素,Firefox,PayPal沙箱使用PayPal付款

时间:2016-04-22 17:51:33

标签: 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/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帐户付款"跨度。我不确定为什么它在这一步没有失败。如果我在失败后手动点击该链接,我会看到密码字段没有填充,所以在第四行之前似乎出现了问题。

1 个答案:

答案 0 :(得分:2)

  1. 即使进行了when_present次调用,如果它在irb中一步一步地工作,这很可能是竞争条件,但在直接一起运行时则不然。在调试时,在问题步骤之前放置一个(长时间)睡眠通常很有用,看看你是否遇到了竞争条件。如果睡眠修复它,那么你就知道问题是什么,只需要在点击之前找出正确的事情。

  2. 另一种可能性是,这可能是浏览器处于"活动窗口中的问题。在操作系统中很重要。 (无论如何,命令应该以相同的方式工作,但事实并非如此)。

  3. 此外,使用Chrome运行测试以查看是否存在相同问题也有助于排查问题。

  4. 如果这些都不起作用,请使用您正在与之互动的网址或html更新您的问题。

    另一方面,我很惊讶嵌套when_present& when_enabled有效。 when enabled可能应该包含present?作为前提条件,我会考虑这样做。