10

私が少数派であることは承知していますが、テストの実行中にマシンを使用する必要があります。いつも邪魔になるのは、Selenium RC を使用してテスト ケースを実行すると、ブラウザー ウィンドウが常にフォーカスを奪うことです。これにより、ログアウトする直前の 1 日の終わりに、1 日に複数回テストを実行することができなくなります。Selenium Grid を試してみましたが、0.0.0.0 (ネットワーク管理者からの要件) ではなく、localhost のリクエストのみをリッスンするようにできません。

Selenium のドキュメントと多数の Selenium サイトを調べましたが、決定的な答えを見つけることができませんでした。テストの実行中に Selenium RC テストが Windows フォーカスを盗むのを防ぐことはできますか?

Firefox 3.6.13 を使用しています。

4

8 に答える 8

11

Linux では、別のディスプレイ (:8 など) で vncserver を起動し、Selenium と Firefox インスタンスでそのディスプレイを使用できます。私が働いている場所ではうまく機能します。

于 2011-04-11T18:58:57.610 に答える
7

VMで実行します。さまざまなOSやブラウザでテストできるという追加の利点があります。

同じマシン上でフォーカスを盗むことは避けられないというのが私の理解です。

于 2011-04-11T18:59:43.113 に答える
5

Linuxを実行していますか?FirefoxProfile クラスには、Linux でのフォーカス スティーリングを回避するために特別なライブラリをロードする、あまり文書化されていない設定があります。これを true に設定します。

http://selenium.googlecode.com/git/docs/api/java/org/openqa/selenium/firefox/FirefoxProfile.html#setAlwaysLoadNoFocusLib(ブール値)

于 2013-09-23T00:40:23.353 に答える
3

テスト間でセレンインスタンスを共有することで、この問題を解決しました。次に、セレンはテスト実行全体で1回だけフォーカスを奪おうとしますが、これはそれほど悪くはありません。

JUnitを使用してSeleniumのスクリプトを作成している場合は、Springを使用してSeleniumSpringJUnit4ClassRunnerインスタンスをBeanとして注入できます。

Springのテストコンテキストを定義しselenium.xml(Spring XML構成ファイルの設定方法に慣れていない場合はグーグルで検索)、Seleniumインスタンスを含めます。

<bean class="com.thoughtworks.selenium.DefaultSelenium" name="selenium">
    <constructor-arg index="0">
        <value>localhost</value>
    </constructor-arg>
    <constructor-arg index="1">
        <value>4444</value>
    </constructor-arg>
    <constructor-arg index="2">
        <value>*firefox</value>
    </constructor-arg>
    <constructor-arg index="3">
        <value>http://localhost:8080/webapp/</value>
    </constructor-arg>
</bean>

次に、テストで、セレンインスタンスをnew'ingする代わりに注入します。

@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration("classpath:selenium.xml")
public class WebappIT {

    @Resource
    private Selenium selenium;

    ... test code ...

}

これをいくらか単純化しました。実際のコードでは、selenium.start()を1回だけ呼び出すことができるように、seleniumインスタンスをプロバイダークラスでラップしています。

于 2011-04-12T08:59:31.273 に答える
2

アップデート

フォーカスを奪う Firefox ウィンドウの回避策を見つけました。私のように Selenium をスタンドアロン サーバーとして実行している場合は、次のように追加できます。

-browserSessionReuse

Selenium テスト ケースを起動する Ant タスクへ。これにより、セレン テストの実行中に 2 つの新しい Firefox ウィンドウが開くのを待つ必要がないため、かなりの時間も節約できます。回避策として、各テストがスタンドアロン テストである場合、テストが開始されるたびにサイトからログアウトする必要があります。ログイン方法を編集してログアウト リンクを探すことで、これをすばやく実現しました。ログアウト リンクが存在する場合、テストはログアウト リンクをクリックし、ログイン ページが使用可能になるのを待ってから、テストを続行します。

于 2012-01-20T16:47:38.367 に答える
1

同じマシンでそれを行うことはできません。VM が必要か、コントローラー レベルでプログラミングして、スクリプトがブラウザーを起動してスクリプトを実行しないようにする必要があります。

于 2011-04-12T08:14:00.857 に答える
1

Firefoxの代わりにChromeを使用するとうまくいきました。別のワークスペースで起動するだけで、そのまま残ります。

于 2013-10-23T22:33:54.840 に答える