問題タブ [selenium-webdriver]

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.

0 投票する
1 に答える
10153 参照

java - Selenium ページ オブジェクトの再利用

Selenium 2 の慣習により、PageObjects を POJO として使用し、PageFactory を使用してこのクラスのフィールドをインスタンス化する方法が非常に気に入っています。

私が制限を感じているのは、多くの異なるページで多くの要素を再利用していることです。大きな問題は、これらの再利用されたコンポーネントが異なるページに表示されたときに同じ ID/名前を持たないことです。ただし、それぞれに対して実行するテストは同じです。

例として、多くの場所で日付を収集します。したがって、このページ オブジェクトの例は次のようになります (月、日のフィールドは削除されています)。

次に、以下のコードでこれを簡単にテストできます。

私が本当にやりたいことは、Spring を使用して、その id/name/xpath などをアプリケーションに注入できるようにすることです。

PageFactory を利用する能力を失うことなく、これを行う方法はありますか?

編集 1 -- 理想的なベース レベル クラスを追加し、カスタム ロケータとファクトリに取り組んでいます。

編集 2 -- 注意として、Selenium 2.0.a5 以降を実行している限り、ドライバーに暗黙のタイムアウト値を指定できるようになりました。

したがって、コードを次のように置き換えることができます。

0 投票する
4 に答える
4221 参照

linux - WebDriver Selenium API: Linux の FirefoxDriver?

LinuxディストリビューションでFirefoxDriverを使用してテストを実行することに成功した人はいますか? もしそうなら、どのディストリビューションを使用していますか? xvfb を使用していますか?

今のところ、単純に Windows 2003 サーバーを使用することを考えていますが、もう少し高価であり、Linux 環境に慣れています。

0 投票する
2 に答える
14967 参照

c# - Selenium 2/Webdriver - 表の行をダブルクリックする方法 (新しいウィンドウが開きます)

Selenium 2.0 / Webdriver で C# を使用しており、新しいブラウザー ウィンドウを開くテーブル行のダブルクリックをシミュレートしようとしています。

2 つの問題があります。

  1. 一意のクラス名を持つテーブル行を見つけた後 (つまりfindelement(By.classname("...")))、クリック メソッド (または選択/送信) を適用しても何も実行されず、問題の要素に対してその種類のアクションを実行できないと不平を言います。

  2. Selenium 2.0/Webdriver でダブルクリックを実行するにはどうすればよいですか?

0 投票する
4 に答える
22392 参照

image - Selenium - ページに画像が表示されているかどうかを確認します

Web アルバム アプリケーション用の一連の Selenium テストを作成しています。画像が実際に表示されるかどうか (有効な画像データが含まれているかどうか) をテストしたいと思います。そのようなことは可能ですか?

0 投票する
1 に答える
1581 参照

selenium - JqueryライブラリをSeleniumに追加します

誰かがJqueryライブラリをSeleniumに追加する方法を教えてもらえますか?私はオンラインで検索しました。以下は私がこれまでに行った手順です。次に何をすべきかわかりません。これらの変更後、変更を加えてセレンjarを再構築するにはどうすればよいですか?

  1. 解凍されたセレン2.04.jar
  2. user-extensions.jsにコピーされたjQuery.jsの内容
  3. 以下のようなselenium-remoterunner.jsファイルのrunSeleniumTest()関数のSeleniumコアへのJQueryロケーター、

    function runSeleniumTest(){... selenium.doAddLocationStrategy( "jquery"、 "var loc = locator; var attr = null; var isattr = false; var inx = locator.lastIndexOf('@');

    /li>
0 投票する
1 に答える
163 参照

java - どのパターンを使用できますか?

現在、確認ダイアログ ボックスをうまくサポートしていない Selenium 2 を使用してプロジェクトを実装しています。

この制限には回避策があります。window.confirm を上書きして、特定のテスト ケースに対して返す必要がある値を返すだけです。

次の文字列を設定して実行できます。

これはテンプレート メソッドとしては非常に簡単に思えますが、同じページ オブジェクトに複数のテスト ケースがあり、ページを操作した後に確認/拒否する必要があります。したがって、これらすべてのテストを一度に実行する単一のメソッドを持つことはできません。

テスト メソッドに実行するコマンドを挿入することは理にかなっている可能性がありますが、ここでの私の最終的な目標は、技術力の低いスタッフが XML にいくつかの文字列を書き込んでから Spring Expression Language で実行することでテストを作成できるようにすることです。これにより、テストを書く際の「容易さ」がいくらか失われます。

主な注意点は、このテスト スイートは実際には要件によるアプリケーションであり、個別に実行される一連のテスト ケースではないということです。小さなテスト ケースであれば、抽象的なテスト ケースを拡張して同じセットアップ ルーチンと分解ルーチンを利用できるので、はるかに簡単です。

私が最終的に探しているのは、このテンプレート メソッドに沿ったものですが、1 つのページ オブジェクトで複数のテスト ケースをサポートできる必要があります。

0 投票する
3 に答える
926 参照

java - Javaリフレクション/ジェネリック

次の3つのクラスがある場合、リフレクションを使用して親クラスの初期化関数を呼び出し、次にサブクラスを呼び出すにはどうすればよいですか。

clazzパラメーターはraw型であるため、Testクラスのinitialize関数をパラメーター化する方法がよくわかりません。

基本的に必要なのは、initializeに渡すものがElementのサブクラスである場合、クラス階層のinitializeを呼び出すことです。

次のようなもの:

編集1:

上記の疑似関数を別の方法でパラメーター化して、オブジェクトのタイプを保持してから、必要な関数を呼び出すことはできませんか?

私がやろうとしているのは、クラスごとに同じメソッドをオーバーライドする必要がないようにし、Selenium2ページオブジェクトの継承を許可することです。私がする必要があるのは、自分のスーパークラスをイントロスペクトし、これらのフィールドでテストを実行する前に、各WebElementフィールドを初期化することです。

これらにはSpringが注入されており、さらに複雑にするために、Spring式言語を使用してテストを記述できるようにしています。Beanを遅延読み込みし、InitializingBeanインターフェースを使用して、NPEを回避するために、使用する前にWebElementsを初期化しようとしています。

Springを使用してロケーション戦略を挿入できるように、WebElementsをカスタムオブジェクトでラップする必要がありました(多くの部分を再利用しますが、アプリケーションで使用される場所に応じてID/クラス名が異なります。これは以前に行われました。私がここに来ると、一貫性についての私の議論にもかかわらず、現時点では変更されません)。たとえば、さまざまな粒度の日付ウィジェットがあります。月だけが必要な場合もあれば、月と年が必要な場合もあります。抽象クラスを使用して、これらの共通点を最小公分母に分解できれば便利です。そこから拡張します。そのためには、基本クラスで次のことができる必要があります。

0 投票する
11 に答える
26444 参照

php - Selenium 2(WebDriver)とPhpunit?

PHPunitでSelenium2を使用する方法を知っている人はいますか?PHPにSelenium2のサンプルはありますか?

0 投票する
2 に答える
2656 参照

session - Selenium + PHPUnit:sessionIdはnullであってはなりません。このセッションはもう始まっていますか?

PHPでSeleniumRCを実行しています。簡単なログインテストを実行すると、正常に完了しますが、ブラウザを閉じる直前に、次のエラーが発生します。

23:50:09.969 INFO-コマンドリクエスト:セッションd7a1effeabc24b0b9b46ad6fdb3eebecのtestComplete [、] 23:50:09.969 INFO-GoogleChromeを強制終了しています...23:50:10.286 INFO-結果を取得しました:セッションd7a1effeabc24b0b9b46ad6fdb3eebecでOK -コマンドリクエスト:セッションnullのgetLocation [、] 23:50:10.351エラー-セッションnullの'getLocation'コマンドの実行中に例外が発生しましたjava.lang.NullPointerException:sessionIdをnullにしないでください。このセッションはもう始まっていますか?org.openqa.selenium.server.FrameGroupCommandQueueSet.getQueueSet(FrameGroupCommandQueueSet.java:216)at org.openqa.selenium.server.commands.SeleniumCoreCommand.execute(SeleniumCoreCommand.java:34)at org.openqa.selenium.server.SeleniumDriverResourceHandler org.openqa.seleniumの.doCommand(SeleniumDriverResourceHandler.java:562)。java:357)at org.openqa.jetty.util.ThreadPool $ PoolThread.run(ThreadPool.java:534)23:50:10.364情報-取得した結果:エラーサーバー例外:sessionIdをnullにしないでください。このセッションはもう始まっていますか?セッションnull

解決策が見つかりません...助けてください。

0 投票する
2 に答える
1299 参照

selenium - リンクをクリックするとテストが終了します

次のコマンド

ポップアップを開きますが、テストは続行されません

私は配置しました

役に立たないクリックコマンドの後、リンクはJava関数に移動します。

このコマンドがリンク、ボタン、チェックボックス、またはラジオボタンをクリックすることを知っています。クリックアクションによって新しいページが読み込まれる場合(リンクが通常行うように)、を呼び出します waitForPageToLoadwaitforPageToLoadポップアップの読み込みが登録されていないと思います

アップデート

私は以下を試しました

そして、次のものを手に入れました

ポップアップが別のドメインにありますこれが原因である可能性がありますか?