JavaでSelenium3自動テスト

まず、環境

このインストールjdk1.8

このインストール日食

日食Mavenのアセンブリを追加します

新しいMavenプロジェクトとでのpom.xmlで、次のフィールドを追加します。

<依存>

      <groupIdを> org.seleniumhq.selenium </ groupIdを>

      <たartifactId>セレン-javaの</たartifactId>

      <バージョン> 3.14.0 </バージョン>

    </依存関係>

    <依存>

      <groupIdを> org.seleniumhq.selenium </ groupIdを>

      <たartifactId>セレンサーバー</たartifactId>

      <バージョン> 3.14.0 </バージョン>

    </依存関係>

1

2

3

4

5

6

7

8

9

10

第二に、Chromeブラウザを起動します

このドライバまでそれを使う前に、Chromeブラウザはchromedriverを必要と起動し、ブラウザのコードを開始します。


1、GET chromeDriver

アドレスを取得chromeDriver http://chromedriver.storage.googleapis.com/index.html


このパスでは、ドライバのすべてのバージョン、ドライバの最新バージョンを参照するには、このページでLATEST_RELEASE開いているファイルで見つけることができます。

次のドライバのさまざまなバージョンにオープンnotes.txtをブラウザのバージョンによっては、Chromeブラウザのバージョン範囲のこの試合のバージョンを確認するために、コンピュータシステムのタイプは、対応するドライバをダウンロードします。


本明細書で使用する場合、図のようなウィンドウシステム。


2、クロムを開始

ChromeDriverクラスのソースコードから理解、クロムインスタンスは事実によって作成されChromeDriverService、次のようにソースコードです。


パブリックChromeDriver(){

    この(ChromeDriverService.createDefaultService()、新ChromeOptions());

  }

1

2

3

1

2

3

次のようにコードで見つかったChromeDriverServiceドライバ名を設定する必要があります参照してください。


/ **

 によって使用されるchromedriver実行可能ファイルの場所を定義するシステム・プロパティ

 {@link #createDefaultService()デフォルトサービス}。

   * /

  public static final String型CHROME_DRIVER_EXE_PROPERTY = "webdriver.chrome.driver"。

1

2

3

4

5

1

2

3

4

5

すなわちwebdriver.chrome.driver;


あなたは、インスタンスのクロムを作成する前にコードを追加する必要があります

するSystem.setProperty( "webdriver.chrome.driver"、driverPath)。


(1)単純なクロム開始の例は以下の通り:

公共の静的な無効メイン(文字列[] args)

    {

     するSystem.setProperty( "webdriver.chrome.driver"、 "D:\\試験\\ドライバ\\ chromeDriver.exe")。

        webdriverをドライバ=新しいChromeDriver()。

        driver.get( "https://www.baidu.com/");

    }

1

2

3

4

5

6

1

2

3

4

5

6

結果として、ブラウザを起動することができます。


ベルトChromeOptionsの(2)クロームカスタムブート

次のように単純なコードは次のとおりです。


公共の静的な無効メイン(文字列[] args)

    {

     するSystem.setProperty( "webdriver.chrome.driver"、 "D:\\試験\\ドライバ\\ chromeDriver.exe")。

     ChromeOptionsオプション=新しいChromeOptions();

     webdriverをドライバー=新しいChromeDriver(オプション)。

        driver.get( "https://www.baidu.com/");

    }

1

2

3

4

5

6

7

1

2

3

4

5

6

7

次の場合のようなクロムを開始し、いくつかの共通のパラメータを追加するためのどのChromeOptions

options.addArguments(「 - テスト・タイプ」)。

それは、次の機能をサポートしています。

1)(すなわち、addArgumentsを使用して、ブートパラメータを追加します。

2、バイナリクロムセット位置、メソッドSetBinary()を使用して、

図3に示すように、拡張、使用addExtensions(パス)を追加または

addEncodedExtensions(エンコード)。

4、エージェント、放電setProxy(プロキシ)を使用してメソッドを追加します。

5は、使用、クロムを追加するために提供されています。

options.setExperimentalOption( "環境設定"、環境設定);;


以下では、これらの機能のいずれかを導入。


1、ブート引数を追加

一般的に使用されるクロムの起動パラメータの一部については:


    -user-DATA-DIR =「[PATH]」ユーザデータ指定されたユーザーのフォルダパス、ユーザは、ブックマークデータは、このようにシステムパーティション以外のパーティションに格納されていることができます。 

    -diskキャッシュ-DIR = "[PATH]" パス指定されたキャッシュ・キャッシュ 

    バイトで-diskキャッシュサイズ=キャッシュのサイズを指定 

    初期状態に-first実行リセット、最初の実行 

    ステルスモードが有効になり-incognito 

    Javascriptを禁用-disable-javascriptの 

    アドレスバーの=「NUM」数-omnibox-ポップアップカウントはNUMの代わりにポップアップメニューを促すメッセージが表示されます。 

    -user-エージェント=「XXXXXXXX」エージェント文字列がHTTPリクエストヘッダーを変更し、程度とすることができますページのバージョンの変更の影響を参照してください。 

    すべてのプラグインをロードするから-disable-プラグインは、あなたは速度を上げることができます。プラグインページビューの結果:それはおよそすることができ 

    あなたが一緒にこの中で遅いと感じた場合-disable-javascriptのは、JavaScriptを無効に 

    -disable-JavaのJavaが無効になって 

    ブーツを最大化するために-start最大化 

    キャンセル-no-サンドボックスサンドボックスモード 

    -singleプロセス、単一プロセスの実行 

    -processあたりのタブ各タグは別々のプロセスを使用しています 

    -process・パー・サイトサイトごとに別々のプロセスを使用して 

    -in-プロセス・プラグインは、プラグインを別のプロセスを有効にしません 

    -disable-ポップアップブロックを無効にポップアップ傍受を 

    -disable-プラグインは、プラグインを無効にします 

    -disable-画像無効画像 

    ステルスモードに-incognitoブーツ 

    -enable-UDD-プロファイルは、アカウントを切り替えるには、メニューを有効にします 

    -proxy-PAC-URL 1/2介し】プロキシPACを使用して 

    -lang = ZH-CNは簡体字中国語に言語を設定しました 

    -diskキャッシュ-dirのカスタムキャッシュディレクトリ 

    -diskキャッシュサイズのカスタムキャッシュの最大値(バイトで) 

    (バイトで)-media-キャッシュ・サイズのカスタム表示の最大キャッシュ 

    ツールバーのブックマークボタンを追加するには、メニューを-bookmark 

    -enable-syncはブックマークの同期を有​​効にします 

    Google Chromeを実行している-singleプロセス単一のプロセス 

    打ち上げGoogle Chromeを最大化するために-start最大化 

    -disable-javaのJavaの禁止 

    -no-サンドボックス非サンドボックスモード

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

そして、共通の起動パラメータの例:

1、中国のUTF-8エンコーディング形式にブラウザを起動します。


ChromeOptionsオプション=新しいChromeOptions();

options.addArguments( " - LANG = zh_CN.UTF-8")。

webdriverをドライバー=新しいChromeDriver(オプション)。

1

2

3

1

2

3

図2に示すように、アナログiPhone携帯電話:


ChromeOptionsオプション=新しいChromeOptions();

options.addArguments( "ユーザーエージェント= \" のMozilla / 5.0(iPhone; CPU iPhone OS 9_1のMac OS Xなど)のAppleWebKit / 601.1.46ヤモリのような(KHTML、)バージョン/ 9.0モバイル/ 13B143サファリ/ 601.1 "\") ;

webdriverをドライバー=新しいChromeDriver(オプション)。

1

2

3

1

2

3

3、ユーザーのブラウザの設定を使用して


   ChromeOptionsオプション=新しいChromeOptions();

   options.addArguments( " - ユーザー・データ・ディレクトリ= C:/ユーザー/ USER_NAME /のAppData /ローカル/グーグル/クローム/ユーザーデータ");

   webdriverをドライバー=新しいChromeDriver(オプション)。

1

2

3

1

2

3

アドレスコードパスが示されているように、ここで、デフォルトの位置に設置された試験クロームいるので、ネイティブ・ユーザー名をUSER_NAME;このパラメータは、時々、私たちが、Chromeブラウザの自動化を使用して行う構成コードでいくつかの設定で使用することはできませんあなたは、開始するには、カスタムブラウザの構成設定を使用する必要があります。

物事はChromeブラウザを走り始めるこの時間は、それ以外の場合は、新しいブラウザを起動します、既存のChromeブラウザを実行することができますオフにする必要があるか、エラーになることに注意してください。


4、最大化するためにブラウザを設定します。


ChromeOptionsオプション=新しいChromeOptions();

options.addArguments(「 - スタート - 最大化」)。  

webdriverをドライバー=新しいChromeDriver(オプション)。

1

2

3

1

2

3

実際には、必要に応じていない、推奨されていないコードから直接最大化するように設定します。


5は、ChromeDriver Chromeブラウザは、証明書エラー警告を無視するように設定されています。


ChromeOptionsオプション=新しいChromeOptions();

options.addArguments( " - テスト・タイプ"、 "--ignore-証明書エラー")。  

webdriverをドライバー=新しいChromeDriver(オプション)。

1

2

3

1

2

3

本明細書中にコードで提供することができる、それが推奨されません。


6は、GUIモードを開かないクロムを開始

この機能は、上記項59にクロームバージョン、Mac、Linuxのために必要であり、上記項60に記載し、chromeDriverバージョン2.30+で窓れます。


ChromeOptions chromeOptions =新しいChromeOptions();

chromeOptions.addArguments( " - ヘッドレス");

webdriverをドライバ=新しいChromeDriver(chromeOptions)。

1

2

3

1

2

3

このモードでは、時間はあなたが新しくオープンしたブラウザでは表示されません実行されているが、コードが正しく実行することができます。


2.セットクロームバイナリファイルの場所

ここでは、次のコードを使用して、デフォルトの位置にインストールされていないChromeブラウザのための位置を設定するためのchrome.exe:


ChromeOptionsオプション=新しいChromeOptions();

options.setBinary( "C:\\プログラムファイル(x86の)\\グーグルクローム\\ \\アプリケーション\\ chrome.exe");

webdriverをドライバー=新しいChromeDriver(オプション)。

1

2

3

1

2

3

若しくは


ChromeOptionsオプション=新しいChromeOptions();

options.setBinary(新しいファイル( "C:\\プログラムファイル(x86の)\\グーグルクローム\\ \\アプリケーション\\ chrome.exe"));

webdriverをドライバー=新しいChromeDriver(オプション)。

1

2

3

1

2

3

3、拡張アプリケーションを追加

次のコードに示すように、受信パス拡張は、リスト、またはファイルオブジェクト、または複数のオブジェクトファイル拡張子経路です。


ChromeOptionsオプション=新しいChromeOptions();

options.addExtensions(新しいファイル( "/パス/に/ extension.crx"));

webdriverをドライバー=新しいChromeDriver(オプション)。

1

2

3

1

2

3

4.エージェントを追加します。

必要で使用するためにこのセクションでは、特定のWebサイトのマシンを開くためにプロキシを追加します。

コードは以下の通りであります:


ChromeOptionsオプション=新しいChromeOptions();

文字列proxyIpAndPort = "localhostを:8080"; //プロキシアドレス

プロキシプロキシ=新しいプロキシ();

proxy.setAutodetect(真の); //は、プロキシ設定を自動的に検出し、

proxy.setFtpProxy(proxyIpAndPort); // FTPプロキシアドレス

proxy.setHttpProxy(proxyIpAndPort); // HTTPプロキシアドレス

proxy.setNoProxy(proxyIpAndPort); //で区切られたURLのエージェントレスリスト。

proxy.setProxyAutoconfigUrl(proxyAutoconfigUrl); //アドレスエージェント自動インストール

proxy.setProxyType(ProxyType.MANUAL); //手動プロキシは、必要な

proxy.setSocksPassword(パスワード); //パスワード

proxy.setSocksUsername(ユーザー名); //ユーザ名

proxy.setSocksVersionは(5); //これを自動的に設定するproxyTypeのProxyType.MANUALを追加し、これは最新の5、靴下、4または5の内容物を放出するように設定されています

proxy.setSslProxy(proxyIpAndPort)。

options.setProxy(プロキシ)。

webdriverをドライバー=新しいChromeDriver(オプション)。

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

(この作業に先立ち便利な、しかし使いにくい、研究されていないエンド)


図5は、クロムの設定を追加しました

例として使用して、起動時に設定され、いくつかのクロムクロムを追加するには:


ChromeOptionsオプション=新しいChromeOptions();

地図<文字列、オブジェクト>のprefs =新しいHashMapの<文字列、オブジェクト>();

//リマインダーの設定を設定し、2ブロック

prefs.put( "profile.default_content_setting_values.notifications"、2)。

//自動ダウンロードを設定し、二人は、彼らはあなたが求めることなく、複数のファイルをダウンロードすることができ、チェックしていなかったと述べました

prefs.put( "profile.default_content_setting_values.automatic_downloads"、2)。

options.setExperimentalOption( "環境設定"、環境設定)。

webdriverをドライバー=新しいChromeDriver(オプション)。

1

2

3

4

5

6

7

8

1

2

3

4

5

6

7

8

上述したように、コンテンツは、2つの設定が提供され、この部分はクロムの設定部に相当するが、キー値と、設定項目がクロムのインターフェイスに関連付けられていない、クロムは、設定項目に見出され、それらに対応するキー値と、以下:

例えば、確認せずに自動ダウンロード複数のファイルを設定するには:

まず、第1のクロムで次のように、これはデフォルトでチェックチェックアウトに行くように設定:


次のように続いて、設定ディレクトリのChromeブラウザを入力します。


Preferencesフォルダを開き、あなたはここで対応する設定の内側に見つけることができます基づいて自分自身に名前を見つける必要があり、以下、単に(これはデフォルトの設定ファイルである場合に表示されていない)新しいセクションを設定した後に変更されます:


したがって、キーコード値の加算

profile.default_content_setting_values.automatic_downloads

値は2です。


ベルト能力の(3)クロームカスタムブート

ここでは例を示します。


するSystem.setProperty( "webdriver.chrome.driver"、 "D:\\試験\\ドライバ\\ chromeDriver.exe")。

ChromeOptionsオプション=新しいChromeOptions();

DesiredCapabilities能力= DesiredCapabilities.chrome()。

capability.setCapability(ChromeOptions.CAPABILITY、オプション);

webdriverをドライバ=新しいChromeDriver(能力)。

1

2

3

4

5

1

2

3

4

5

上記に示した、添加ChromeOptions直接能力に添加することができるように、他のニーズの能力セットがある場合に、この方法は、ブラウザクロムを起動することをお勧めします。

Chromeブラウザの設定はまた、として、この方法で追加することができます。


地図<文字列、オブジェクト> contentSettings =新しいHashMapの<文字列、オブジェクト>();

contentSettings.put( "画像"、2)。

 

地図<文字列、オブジェクト>環境設定=新しいHashMapの<文字列、オブジェクト>();

preferences.put( "profile.default_content_settings"、contentSettings)。

 

DesiredCapabilitiesキャップ= DesiredCapabilities.chrome()。

caps.setCapability( "chrome.prefs"、好み)。

webdriverをドライバ=新しいChromeDriver(CAPS)。

1

2

3

4

5

6

7

8

9

1

2

3

4

5

6

7

8

9

次のようにこのプロキシにもコードに直接添加してもよいです。


おすすめ

転載: blog.51cto.com/14529380/2435610