Selenium テスト

このトピックでは,Controller シナリオで Selenium スクリプトを使用する方法について説明します。

注: Controller で Selenium スクリプトを実行するためにライセンスは必要ありませんが,今後のバージョンでは変更される可能性があります。

Selenium テストの概要

Selenium は,Web ブラウザの自動化を実現およびサポートする,さまざまなツールとライブラリの包括的なプロジェクトです。詳細については,Selenium 製品のドキュメントを参照してください。

Controller は,シナリオでの Selenium テスト・スクリプトの統合をサポートします。1 つまたは複数の Selenium スクリプトを,シナリオ内の他の任意のプロトコル・スクリプトとともに実行できます。

Selenium スクリプトは,Windows と Linux の両方の Load Generator で実行できます。

Controller は,次の Selenium テスト・タイプを実行できます(現在,.java 拡張子のみ)。

  • シンプルな Java スクリプト
  • JUnit スクリプト
  • TestNG
  • XML を使用した TestNG

Selenium スクリプトの機能

次の Selenium 機能は,Selenium スクリプトが Controller で実行されるときのテストに影響を与えます。

  • 注釈:Main 関数があるシンプルな Java スクリプトの場合,各実行はトランザクションとみなされます。スクリプトに対して[完了するまで実行する]が設定されている場合,表示されるトランザクションは 1 つのみです。スケジュールに従って実行する場合,トランザクション数は反復回数と等しくなります。

    JUnit スクリプトと TestNG スクリプトの場合,トランザクションは注釈 @Test で示されます。スクリプトが 1 回実行されると,トランザクション数は,スクリプト内で見つかった @Test 注釈の数と等しくなります。

  • ヘッドレス実行:メモリ消費量を抑えて,Controller からの Selenium スクリプトの実行エクスペリエンスを向上させるには,Selenium スクリプトに対して headless オプションを使用することをお勧めします。このオプションを使用すると,テスト実行中に目に見える形でブラウザが開くことがなくなります。

    ChromeOptions options= new ChromeOptions();

    options.addArguments("--headless");

    driver = new ChromeDriver(options);

    このオプションを使用しない場合,開かれるブラウザの数は,実行中の仮想ユーザ数と同じかそれ以上になります。

先頭に戻る

Selenium テストのための必須のセットアップ

以下は,Controller シナリオで Selenium スクリプトを使用するための前提条件です。

ヒント: Selenium スクリプトの実行用に専用のマシンを使用することをお勧めします。複数の ChromeDriver または FirefoxDriver インスタンスを並行して実行すると,リソースを消費する可能性があります。

  • マシンで Selenium テストを実行できる場合,Controller でもテストを実行できます。

  • システムで WebDriver 環境変数が定義されていることを確認します(ブラウザに応じて ChromeDriver または GeckoDriver)。

  • LoadRunner Professional インストールには,Selenium Server の jar が含まれています。Selenium スクリプトが他の依存関係(クラスパスまたは TestNG XML)を使用する場合,スクリプトの実行環境設定 Selenium ノードで,パラメータ値をそのファイル名に設定します。

先頭に戻る

シナリオでの Selenium スクリプトの使用

このセクションでは,Selenium スクリプトをシナリオに追加する方法について説明します。

注: ネットワーク仮想化は,Selenium テストに対してサポートされていません。

Selenium シナリオを定義するには,次の手順を実行します。

  1. 前述のように,Load Generator マシンが Selenium テストを実行するようにセットアップされていることを確認します。
  2. Controller のメイン・ツールバーで,[新規シナリオ]ボタン をクリックします。
  3. [新規シナリオ]ダイアログ・ボックスで,[スクリプトの追加]をクリックします。[スクリプト タイプ]ドロップダウンから,[Seleniumスクリプト]を選択します。
  4. 参照]をクリックして,Selenium スクリプト(.java ファイル)を選択します。
  5. [新規シナリオ]ダイアログ・ボックスで[OK]をクリックします。[デザイン]タブで,Selenium スクリプトを含むシナリオが開きます。
  6. スクリプト名を右クリックして,[実行環境設定]を選択します。スクリプトで必要な場合は,[クラスパス]または[XML ファイル名]を入力します。

  7. シナリオの設定は,Selenium スクリプト内に定義されます。次の設定を[全体スケジュール]で定義できます。

    • 継続時間:[完了するまで実行する]に設定します。推奨設定です。
    • 仮想ユーザ開始:このオプションを選択する場合は,使用する仮想ユーザ数を制限することをお勧めします。

      注: 一般的に,パフォーマンス・テストに Selenium と WebDriver を同時に使用することは推奨されていません。代わりに,専用の Web または DevWeb プロトコルを使用してください。

  8. [実行]タブで,[シナリオの開始]ボタンをクリックしてシナリオの実行を開始します。

先頭に戻る

Selenium スクリプトの例

このサンプル・ファイルで,次の内容が確認できます。

  • テストは headless 引数を使用して実行されます。

  • テストは 2 分間実行されます。
  • 各反復には,2 つの @Test 注釈 => 2 つのトランザクションが含まれます。
// Generated by Selenium IDE
import org.junit.Test; 
import org.junit.Before; 
import org.junit.After; 
import org.junit.BeforeClass; 
import org.junit.AfterClass; 
import static org.junit.Assert.*; 
import static org.hamcrest.CoreMatchers.is; 
import static org.hamcrest.core.IsNot.not; 
import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.firefox.FirefoxDriver; 
import org.openqa.selenium.chrome.ChromeDriver; 
import org.openqa.selenium.remote.RemoteWebDriver; 
import org.openqa.selenium.remote.DesiredCapabilities; 
import org.openqa.selenium.Dimension; 
import org.openqa.selenium.WebElement; 
import org.openqa.selenium.interactions.Actions; 
import org.openqa.selenium.support.ui.ExpectedConditions; 
import org.openqa.selenium.support.ui.WebDriverWait; 
import org.openqa.selenium.JavascriptExecutor; 
import org.openqa.selenium.Alert; 
import org.openqa.selenium.Keys; 
import java.util.*; 
import java.net.MalformedURLException; 
import java.net.URL; 
import java.util.concurrent.TimeUnit; 
import org.openqa.selenium.chrome.ChromeOptions; 

public class Testrec1Test {
  private WebDriver driver; 
  private Map<String, Object> vars; 
  JavascriptExecutor js; 
  
  @Before
  public void setUp() {
    /* driver = new ChromeDriver(); 
    js = (JavascriptExecutor) driver; 
    vars = new HashMap<String, Object>(); */
	
	ChromeOptions options= new ChromeOptions(); 
	options.addArguments("--headless"); 
	driver = new ChromeDriver(options); 
	js = (JavascriptExecutor) driver; 
    vars = new HashMap<String, Object>(); 
  }
  @After
  public void tearDown() {
	
    driver.quit(); 
  }
  @Test
  public void test1() {
    // Test name: test1
    // Step # | name | target | value
    // 1 | open | / |
    driver.get("http://Your_page.com"); 
    // 2 | setWindowSize | 1050x863 |
    driver.manage().window().setSize(new Dimension(1050, 863)); 
    // 3 | click | linkText=Example 1 |
    driver.findElement(By.linkText("Example 1")).click(); 
    // 4 | click | name=entry |
    driver.findElement(By.name("entry")).click(); 
    // 5 | type | name=entry | test
    driver.findElement(By.name("entry")).sendKeys("test"); 
    // 6 | click | css=p > input |
    driver.findElement(By.cssSelector("p > input")).click(); 
    // 7 | click | css=body |
    driver.findElement(By.cssSelector("body")).click(); 
    // 8 | click | css=body |
    driver.findElement(By.cssSelector("body")).click(); 
	//close in function
	driver.close(); 
	}

	@Test
	public void empty_function(){
	//dummy test
	}
	
  }

先頭に戻る

Selenium テスト結果の表示

Selenium スクリプトが生成する結果は,次の標準的な Controller グラフに表示されます。

  • 実行中の仮想ユーザ
  • トランザクション応答時間
  • 秒ごとのトランザクションの総合計(成功)
  • 秒ごとのトランザクション数(成功)

標準のスループット・グラフには,Selenium スクリプトの結果は表示されません。カスタマイズしたグラフは,Selenium スクリプトの結果から生成できません。

先頭に戻る

注意事項とヒント

Selenium テストを使って作業する場合,次の点に注意してください。

  • 実行環境設定の[クラスパス]および[TestNG XML]フィールドは,絶対パスと相対パスをサポートします。相対パスの開始ディレクトリはスクリプト・ディレクトリ(.java スクリプト・ファイルがある場所)です。

  • 複数の XML が相互に接続されている場合は,実行環境設定でメイン XML を指定します。

  • スクリプト・フォルダに複数の XML 構成設定ファイルがあり,実行環境設定で XML が指定されていない場合,すべての XML ファイルが実行されます。

  • (実行環境設定の)XML フィールドからの入力が無効な場合,Controller にアップロードされた最初のスクリプトのみが実行されます。

  • 一部の ChromeDriver の特定のバージョンでは,以下の例のように,Chrome の追加属性を定義した後でのみ,スクリプトが正常に動作します。

    ChromeOptions options = new ChromeOptions();

    options.addArguments("--remote-allow-origins=*");

    ChromeDriver driver = new ChromeDriver(options);

    注: この動作は,LoadRunner Professional を使用せずにスクリプトを実行した場合でも発生する可能性があります。

  • Linux Load Generator を使用する場合は,Selenium .java スクリプトに追加属性を定義することをお勧めします。以下の例は,Chrome を使用する場合のこれらの変更を示しています。

    import org.openqa.selenium.chrome.ChromeOptions;

    ChromeOptions options = new ChromeOptions();

    System.setProperty("webdriver.chrome.driver", "//path_to_driver");

    options.addArguments("start-maximized"); // ブラウザを最大化モードで開く

    options.addArguments("disable-infobars"); // 情報バーを無効にする

    options.addArguments("--disable-extensions"); // 拡張機能を無効にする

    options.addArguments("--disable-gpu");

    options.addArguments("--disable-dev-shm-usage"); // リソースの制限の問題を解決する

    options.addArguments("--no-sandbox"); // OS セキュリティ・モデルをバイパスする

    options.addArguments("--headless"); // OS セキュリティ・モデルをバイパスする

    driver = new ChromeDriver(options);

先頭に戻る

関連項目: