問題タブ [protractor]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
protractor - Protractorjs のテスト - :contains('someText') の使用方法 - 文字列を誤ってエスケープする可能性があります
テストする必要がある角度のあるフォームがあり、テキストノードのコンテンツを介して、ID のないアイテムを選択したいと考えています。他のプラットフォームの jquery と selenium では、:contains() と呼ばれる特別な css セレクターを使用して、何かを見つけることができました。
これを実行すると、無効な文字列に関する字句エラーが発生します。文字列内の引用符をエスケープするさまざまな方法を試しました。また、引用符を導入した後に同じことを行ったxpath式も試しました。それは次のように見えました:
それは同じように失敗しました。
1: :contains selenium 関数は分度器で使用できますか?
2: 文字列を間違ってエスケープしていませんか?
オブジェクトに ID を添付するように言わないでください。マークアップの変更は許可されていません。
javascript - 分度器を使ったモッキングとスタブ
分度器で角度アプリをテストしたい。アプリには、サーバーと通信する API モジュールがあります。これらのテスト中に、この API モジュールをモックしたいと思います。完全な統合テストはしたくありませんが、API からの期待値を使用してユーザー入力からテストします。これにより、クライアントのテストが高速化されるだけでなく、接続エラーなどのエッジ ケースをテストできるようになります。
分度器でこれを行うにはどうすればよいですか?統合テストのセットアップを開始しました。
npm 分度器モジュールを使用し、セレンをインストールし、デフォルトの構成を調整し、onProtractorRunner.jsを使用してセットアップが機能することを確認しました。
おすすめのいじめ方は?モックはブラウザ内で行う必要があり、テスト ファイルで直接行う必要はないと思います。テスト ファイル内のコマンドは分度器固有のものであり、セレン ランナーに送信されると想定しています。したがって、セッション中およびテスト中に JavaScript オブジェクトを共有することはできません。
sinon.jsのようなスパイ ライブラリが必要になると思いますか、それとも分度器に既に含まれていますか?
編集:分度器の問題トラッカーでこの問題について読みました。これは、それを行う方法である可能性があります。基本的に、テストでモックモジュールを作成し、ブラウザ/アプリケーションスコープで実行するために送信します。
編集:これはより有望な問題です。最初の話は、Angular App にモックを追加することについてです。2 つ目は、バックエンドのモックについてです。
この場合、Angular アプリは元の形式のままです。ただし、これは現在、非推奨の ng-scenarios でのみ機能します。
angularjs - Grunt を介して分度器を Yeoman と統合する
分度器を Yeoman 製の足場と統合したいと考えています。私はチュートリアルに従いましたが、古いものscenario-runner
はe2eテストのセットアップに使用されました(経由grunt
)。
足場をアップグレードし、代わりに分度器を使用したいと思います。
何かご意見は?
angularjs - Firefox または Safari を使用した分度器での E2E テスト?
分度器を使用して angular.js アプリと Chrome での動作をテストしています。ジャスミンのセットアップと追加の webdriver 構文の学習に問題がありましたが、今ではコツを掴んでおり、Chrome で実行されて合格している多くのテストがあります。
分度器をFirefox、Safari、IE、Operaで実行する方法を知っている人はいますか? Chrome だけでなく、より多くのブラウザーに対してこれらのテストを実行できるようにしたいと考えています。GitHub の分度器のドキュメントを調べましたが、chromeDriver
. Firefox ドライバーや Safari ドライバーのようなものはありますか?
PS。あまり役に立たないと思うので、現在の構成ファイルは投稿しませんが、役立つ場合はお知らせください。ここに投稿できます。
javascript - IE 9 で非同期スクリプトの待機中にタイムアウトが発生しました
Internet Explorer 9 で (Protractor を使用して) いくつかのテストを実行しようとしています - そして、「 driver.executeScript 」を含む各テストでエラーが発生します: 非同期スクリプトの待機中にタイムアウトが発生しました (警告: サーバーはスタックトレース情報を提供しませんでした)。他のテストは非常にうまく機能します。
関数の最後に追加したタイムアウト制限 (20000 ミリ秒) を IE が理解していないようです - タイムアウトは約 11 秒後に期限切れになります。
非同期実行を待機させる WebdriverJS コード行はありますか?
すべてのテストは Firefox で完全に機能します。
コード:
javascript - 分度器がAngularを見つけられない
Angular が読み込まれて実行されていることを分度器に認識させることができないようです。Chrome を開くと、アプリがブラウザーに完全に読み込まれるため、Angular が正しく読み込まれて実行されていることがわかります。
構成ファイル:
実行しようとしているテストが 1 つしかないのですが、Protractor が Angular を見つけられないために失敗します。
テスト:
これは私が得るエラーです:
UnknownError: javascript エラー: angular が定義されていません (セッション情報: chrome=30.0.1599.69) (ドライバー情報: chromedriver=2.2,platform=Windows NT 6.1 SP1 x86_64) (警告: サーバーはスタックトレース情報を提供しませんでした) コマンド期間またはタイムアウト: 19 ミリ秒 ビルド情報: バージョン: '2.35.0'、リビジョン: 'c916b9d'、時間: '2013-08-12 15:42:01' システム情報: os.name: 'Windows 7'、os.arch : 'amd64'、os.version: '6.1'、java.version: '1.7.0_21' セッション ID: 1ef7dcd7c5fc9c4e9e1dede050002adf ドライバー情報: org.openqa.selenium.chrome.ChromeDriver 機能 [{platform=XP、acceptSslCerts=true、javascriptEnabled =true, browserName=chrome, chrome={chromedriverVersion=2.2}, rotatable=false, locationContextEnabled=true, version=30.0.1599.69, cssSelectorsEnabled=true,databaseEnabled=true、handlesAlerts=true、browserConnectionEnabled=false、webStorageEnabled=true、nativeEvents=true、applicationCacheEnabled=false、takesScreenshot=true}]
ng-app 属性を body タグに移動しようとしましたが (それに応じて構成を変更しました)、同じエラーが発生しました。html タグに ng-controller 属性もあるのですが、それを body に移動して、html タグの ng-app 属性をそのままにしてみましたが、結果は同じでした。なぜこれが失敗するのかについて誰かが洞察を持っていますか?
編集: 役立つかもしれないメモをいくつか。上記のテストを更新して、手動のブートストラップ作業を含めました。Angular とすべてのモジュールのスクリプト タグは、ページの下部、終了 BODY タグの直前にあります。HTML タグには、まだ ng-app="myApp" 属性と ng-controller="baseController" 属性があります。テストでアプリを手動でブートストラップしようとすると、次のようになります。
私が心配しているもう 1 つのことは、私たちが使用するモジュールの 1 つが絶対に "$" を jQuery にマップする必要があるため、次のようにマップすることです。
ng-app が含まれている場所: