2016-04-22 145 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'哪個工作正常。 –