Selenium IDE

Selenium IDE

  • ドキュメント
  • API
  • プラグイン
  • ブログ
  • ヘルプ

›概念

はじめに

  • スタートガイド
  • Selenium IDE 拡張機能ID
  • ヘルスチェック

概念

  • リクエスト
  • エラー処理
  • コードの出力
  • コードのエクスポート

IDEの拡張

  • コマンドの追加
  • IDEイベント
  • セットアップとティアダウンの出力

APIリファレンス

  • はじめに
  • システム
  • 再生
  • 記録
  • ポップアップ
  • エクスポート

コードの出力

Selenium IDE は、ブラウザ内での再生という主要なコンポーネントが 2 つあり、これは actions と events によって実現されています。

そして、コマンドラインランナーを使用してコマンドラインモードで再生します。

Selenium SIDE Runner 環境

ランナーは Node をベースとしているため、この環境を活用してより良いコードを出力できます。

  • npm を使用した Node.js 8 以降
  • Jest
  • jest-environment-selenium
  • selenium-webdriver

コードの出力

コードを出力する際には、プラグインはコードを出力する唯一のものではなく、出力の流れを制御するものでもないため、特定の点に注意する必要があります。
プラグインが互いの実行を妨げないようにするために、特定の予防措置を講じる必要があります。

return を使用しない

キーワード return は、その後のコードに到達できないことを意味し、他のプラグインの妨げになる可能性があります。

return somePromise();
plugin2Func(); // unreachable

代わりに、Node 8 以降を使用しているため、async 関数を活用できます。

await somePromise();
plugin2Func(); //works

グローバルスコープで変数を定義しない

グローバルスコープで変数を定義すると、プラグインや Selenium IDE 自体が同じ変数を定義した場合、エラーまたは未知の副作用が発生する可能性があり、デバッグが困難になります。

たとえば、このテストケースを考えてみましょう

  • store | button | element
  • plugin click | button
  • assert element present | css=${element}

変数を定義すると、コードは次のようになります

let element = "button";
let element = await driver.findElement();
await element.click();
expect(element).toBePresent(); // different button!

グローバルスコープで変数を定義しないようにするには、Promise の then 関数を使用します

let element = "button";
await driver.findElement().then(element => {
  return element.click();
});
expect(element).toBePresent(); // the store defined button

まとめ

一般的に、グローバルスコープを操作することは避けましょう。定義する必要がある場合は、Promise の then を使用するか、最悪の場合即時実行関数式を使用できます。

最終更新日: 2019年2月21日
← エラー処理コードのエクスポート →
  • コードの出力
    • Return を使用しない
    • グローバルスコープで変数を定義しない
    • まとめ
Selenium IDE
ドキュメント
スタートガイドAPIリファレンスプラグインの作成
コミュニティ
Slackirc (#selenium)Googleグループ
その他
ブログGitHubStarレガシーIDE
Copyright © 2019 Software Freedom Conservancy (SFC)