簡體   English   中英

無法使用黃瓜step_definition定位元素,但能夠通過水豚獨立定位

[英]Unable to locate element with cucumber step_definition, but able to locate it with capybara stand-alone

我正在測試一個網站,該網站的右側既有垂直登錄表單,又有底部有水平登錄表單。 兩者都有相同名稱的“電子郵件”和“密碼”字段。 所以我采用水豚的within ,以余地我感興趣的領域的Web表單看起來像這樣的有趣的位:

在此處輸入圖片說明

我有兩個單獨的項目,其中我正在嘗試調味醬實驗室的自動化。 第一個項目是僅水豚的示例,已對其進行了修改以測試上面顯示的頁面。 第二個項目是完全相同的測試的黃瓜實現。 這些是非常簡單的一次性硬編碼測試,只是為了證明這兩種技術的概念。

這是僅水豚示例的有趣之處:

within(:css, ".right-container.login-form") do
    fill_in 'email', :with => "greg.gauthier+#{generate_email_suffix}@website.com"
    fill_in 'password', :with => 'l33tP@$$w0rd'
    click_button 'Submit'
end

這是黃瓜step_definition的有趣部分:

When(/^The user enters his information$/) do
    within(:css, ".right-container.login-form") do #the page has duplicate forms
        fill_in 'email', :with => "greg.gauthier+#{generate_email_suffix}@website.com"
        fill_in 'password', :with => 'l33tP@$$w0rd'
        click_button 'Submit'
    end
end

當我運行僅限水豚的版本時,一切工作正常。 填寫表格,並發送電子郵件確認。

但是,當我運行Cucumber版本時,出現此錯誤:

Unable to find css ".right-container.login-form" (Capybara::ElementNotFound)

怎么會這樣? 這是完全相同的頁面,完全相同的capybara方法( within ,使用:css選擇器),以及完全相同的測試代碼。 我沒有得到什么(除了我可能認為這是錯誤的事實之外)?

哦,這是sauce_helper中的需求列表:

僅限水豚的版本:

require "sauce"
require "sauce/capybara"
require 'capybara/rails'
require 'capybara/rspec'

黃瓜版本:

require "sauce"
require "sauce/capybara"
require "sauce/cucumber"

我是否可能需要在黃瓜版本中包含額外的水豚寶石?

好的,我很尷尬地承認這一點,但是這個問題的原因是對Webdriver行為的無知,至少在與Capybara / Cucumber兼容的情況下如此。

有問題的測試是一組方案中的第二個方案。 顯然,在每種情況下,硒都會將瀏覽器重置為空白。 因此,測試一個完美地工作了,但是測試2,三個等等在ElementNotFound上失敗了,因為……當然,所討論的頁面甚至沒有被加載。

我在支持路徑中的hooks.rb文件中添加了一個Before鈎子,現在可以使用了。

道歉讓問題流混亂...

嘗試在“黃瓜版本”中添加require 'capybara' require 'sauce'之前添加require 'capybara'

從醬GitHub

## In your test or spec helper
require "capybara"
require "sauce/capybara"

推理within來電find Sauce會檢查查找方法是否已定義,如果是,則創建它自己的別名,稱為base_find如果base_find ,則使用與水豚不同的自己的find方法。 我認為他們可能與您的問題有關,因為它使用的是saucefind方法。

不是肯定的,這就是答案,但是您可以隨時嘗試一下。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM