1

したがって、4つのシナリオを追加した.featureファイルが1つあります。C#Selenium WebDriverは連続して実行されるとテストに失敗しますが、個別に実行すると成功します

.featureファイル

Feature: BleKeys beheren 
Het beheren van BLE-keys 
d.m.v. de WebInterface. 

@notfs 
Scenario: BLE-key toevoegen aan database 
    Given I'm at the BleKey/Create page. 
    And I have entered acceptable BLE-data. 
    When I press Create 
    Then The BLE-key should be added to the database. 

@notfs 
Scenario: BLE-key data aanpassen 
    Given There is a BleKey in the database. 
    And I'm at the BleKey/Edit page of that BleKey 
    When I edit the MAC-Adress 
    And I edit the Conditional Report 
    And I edit the Flag 
    And I edit the Distance 
    And I edit the Reference 
    And I edit the ExtraCfg 
    And I press Save 
    Then The BleKey should have changed correctly. 

@notfs 
Scenario: BLE-key data verwijderen 
    Given There is a BleKey in the database. 
    And I navigate to the Delete page of that BleKey 
    When I press Delete 
    Then The BleKey should be deleted. 

@notfs 
Scenario: BLE-key data van 1 sleutel bekijken 
    Given There is a BleKey in the database. 
    And I navigate to the Details page of that BleKey 
    Then The correct data of that BleKey should be displayed 

は、今私は、Visual Studio(ReSharperのユニットテストセッションウィンドウ)で、これらのテストを実行すると、個別にそれらはすべて成功しますが、最初の連続実行すると成功しますが、任意の連続したテストが失敗しました次の例外があります。

OpenQA.Selenium.WebDriverException:予期しないエラー。 System.Net.WebException:リモートサーバーに接続できません---> System.Net.Sockets.SocketException:ターゲットマシンが積極的にそれを拒否したため、接続できませんでした127.0.0.1:5595

試験を見ることができると、それはのベースURLにナビゲートされるべきであるいくつかのローカルIP-アドレスに接続しよう:

http://localhost:58759/ +コントローラ+方法は、試験に応じ。

私はステップファイルでWebDriverインスタンスを作成します。これと同じように:のためにそう

Driver.Navigate().GoToUrl(Adress + BleKeyIndexUrl); 

どこ住所= "http://localhost:58759/"

そしてBleKeyIndexUrl = "BleKeys /インデックス"

public class BleKeyBeherenSteps 
    { 
     public static RemoteWebDriver RemoteWebDriver = new ChromeDriver(); 
     public WebinterfaceSelenium SeleniumTest = new 
     WebinterfaceSelenium(RemoteWebDriver); 
     public Navigate Navigate = new Navigate(RemoteWebDriver); 
     public Check Check = new Check(RemoteWebDriver); 
     public Edit Edit = new Edit(RemoteWebDriver); 
     public Delete Delete = new Delete(RemoteWebDriver); 
     private readonly BeheerContext _db = new BeheerContext(); 
    } 

そして、私の方法で私はこのようなナビゲートWebDriverがlocalhostのアドレスの代わりにローカルのIPアドレスにナビゲートする何らかの理由があります。

編集:すべてのテストの後、ドライバを閉じます。Driver.Quit(); 私の推測では、最初のテスト後何らかの理由でDriver.Urlプロパティが失われることがあります。

答えて

2

ローカルホストとIPアドレスのあいまいさを気にする必要はありません。通常、localhostは127.0.0.1に解決されます。

連続した単体テストの失敗は、アプリケーションプログラムコードでの静的宣言の使用によって頻繁に発生します。今朝この問題を扱ったので、各ユニットテストの開始時に私のアプリケーションの中で厄介な静的変数をリセットしなければなりませんでした。

+0

コンストラクタのプロパティを初期化してRemoteWebDriverを非静的にしましたが、今はうまく動作します。お返事ありがとうございます – Jeroen

+0

私は静的フィールドと変数を読む必要があります:) – Jeroen

+0

@Jeroen:申し訳ありませんが、リモートマシン上のポートの問題を解決できません。専用のテストマシンで一貫したテストローカルポート番号を設定することが問題になっているので、現在の問題は新しいSOの質問が必要なところまで進化していることをお勧めします。私はdevのWebサイトで使用されているポート番号がWebプロジェクトのWebタブで定義されていることをすでに知っていると思いますか?これはDebug/Releaseの違いですか? – camelCase

関連する問題