我在Behat中創建了一個非常簡單的登錄測試,以便登錄到我們的內部應用程序。有兩種登錄類型(從相同的屏幕和框中完成)。有基礎和先進的。唯一的區別在於,在進階中,正在登錄的用戶可以訪問多個公司,並被要求選擇一家公司進行工作。當通過PhantomJS運行Behat登錄測試時,它僅通過第一次運行
我發現,無論何時我通過PhantomJS而不是Selenium運行場景,運行速度都會更快(顯然,因爲無需在無頭瀏覽器模擬器中進行渲染)。當我第一次啓動PhantomJS時,它運行兩種情況都很好。但後來我再次運行它,並且第一個場景(基本登錄)失敗。
如果我重新啓動PhantomJS,它會再次運行,直到第二次嘗試。我很困惑這一點。爲什麼我需要重新啓動PhantomJS才能在第一次調用時再次通過這兩個測試。
如果我指定我只是希望它在後續運行時運行高級登錄,那麼它也會失敗登錄。如果我指定了基本登錄(仍然阻止它運行兩種情況),它也會失敗。但是當我在同一個電話中運行兩個場景時,第一個總是失敗,第二個總是通過。
我甚至改變了順序,以便基本運行第二次而不是第一次,第一種情況(在本例中爲高級)失敗,第二次通過。那麼世界上正在發生什麼?
作爲一個額外的獎勵,我繼續前進,並添加了一行「然後我按照」註銷「',突然兩個情節都再次通過。如果不是因爲它在第二種情況下工作正常,那麼這將是有意義的。如果它已經登錄,它們不應該失敗嗎?有沒有辦法確保每個場景結束時清除PhantomJS的緩存?
Feature: Login
Login to app using a basic user
Login to app using a multi-company user
@javascript
Scenario: Basic Login
Given I am on "/"
And I wait a few seconds
When I fill in "login" with "ijones"
And I fill in "password" with "[email protected]"
And I press "LoginButton"
And I wait a few seconds
Then I should see "By clicking below"
And I press "OK"
Then I should see "Welcome"
@javascript
Scenario: Advanced Login
Given I am on "/"
When I fill in "login" with "rtyler"
And I fill in "password" with "[email protected]"
And I press "LoginButton"
Then I wait for the company selection box
And I click a field "company"
And I pick "Test Company 2"
And I press "CompanyLoginButton"
Then I should see "By clicking below"
And I press "OK"
Then I should see "Welcome"
我在Codeception中遇到同樣的問題。 PhantomJS保持會話。 – Adamamont
我有同樣的問題,但在我的情況下,即使reset()也沒有幫助。 – Pavel