2016-04-22 101 views
1

运行使用的Watir的webdriver与Firefox的Rspec的测试时,我收到错误无法找到您的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' 

# 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帐户支付”跨度。我不知道为什么它不会在这一步失败。如果我在失败后手动单击该链接,则会看到密码字段未填充,因此在第四行之前似乎出现错误。

回答

2
  1. 即使有when_present呼叫,这是最有可能的竞争条件,如果它在IRB工作按部就班,而不是在直接运行起来。调试时,在问题步骤之前放置(长时间)睡眠以查看是否遇到竞争情况通常很有用。如果睡眠修复它,那么你就知道问题出在哪里,只需要在点击之前找出正确的事情来等待。

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

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

如果这一切都不能工作,请更新您的问题与网址或您正在交互的HTML。

在旁注中,我很惊讶,嵌套when_present & when_enabled的作品。 when enabled可能应该包括present?作为先决条件,我会考虑这样做。

+0

加入长时间的睡眠让我发现问题。选择'buttonAsLink'范围在两种付款方式之间切换。我需要选择div id =“method-paypal”,无论当前选择哪个div'id =“method-paypal”'或'id =“method-cc”',它都能正常工作。 我也切换到只是'when_enabled'哪个工作正常。 –