Selenium 3 アップグレード ガイド
Confluence 8.6 リリースで提供される Selenium のバージョンをアップグレードする予定です。円滑にロールアウトするために、事前にアプリをテストする方法を用意しました。
このページには、Selenium 3 でアプリをテストする手順と、アップグレードに関する最新情報が記載されています。
変更の範囲
Confluence 8.6 の Selenium を 2.x から 3.x にアップグレードします。このための作業はアトラシアンですでに始まっています。
お使いのアプリに、Confluence が提供している Selenium のバージョンを使用するテストがある場合、Confluence 8.6 を使用するようにアプリを更新すると、一部のテストが壊れる可能性があります。
注意: 以前、Selenium のアップグレードは Confluence 8.5 で行われるとお伝えしました。Confluence 8.5 は長期サポートリリースであり、これに重大な変更が加えられる可能性を避けるため、この予定はアップデートされました。
アップグレードの準備
急ぎで必要なことではありませんが、将来テストをアップデートする必要があるかどうかを検討する必要があります。
Confluence が提供する現在の既定テスト モジュールは Selenium 2.5.11 です。そこで、Confluence 8.2.0 には別のテスト モジュールをリリースしました。テストに使用する追加のオプション モジュールとして Selenium 3.3.2 を提供しています。Selenium 3 でアプリをテストする場合は、この新しいテスト モジュールを使用するようにアプリ内の pom を変更するだけです。
Selenium 3.x でアプリをテストする
pom.xml の </dependencyManagement>
で、confluence-plugins-platform-test-pom
を confluence-plugins-platform-test-selenium3-pom
に更新して、Confluence 8.2.0 以上のバージョンに設定します。
新しいテストの POM は次を提供できます。
<dependencyManagement>
<dependencies>
<dependency>
<groupId>com.atlassian.confluence</groupId>
<artifactId>confluence-stateless-test-runner</artifactId>
<version>8.0.5</version>
</dependency>
<dependency>
<groupId>com.atlassian.confluence</groupId>
<artifactId>confluence-webdriver-pageobjects</artifactId>
<version>11.4.12</version>
</dependency>
<dependency>
<groupId>com.atlassian.selenium</groupId>
<artifactId>atlassian-webdriver-core</artifactId>
<version>3.3.2</version>
</dependency>
<dependency>
<groupId>com.atlassian.selenium</groupId>
<artifactId>atlassian-pageobjects-elements</artifactId>
<version>3.3.2</version>
</dependency>
<dependency>
<groupId>com.atlassian.selenium</groupId>
<artifactId>atlassian-pageobjects-elements-aui</artifactId>
<version>3.3.2</version>
</dependency>
<dependency>
<groupId>com.atlassian.browsers</groupId>
<artifactId>atlassian-browsers-auto</artifactId>
<version>3.1.4</version>
</dependency>
<dependency>
<groupId>com.google.guava</groupId>
<artifactId>guava</artifactId>
<version>31.1-jre</version>
</dependency>
<dependency>
<groupId>com.google.inject</groupId>
<artifactId>guice</artifactId>
<version>5.1.0</version>
</dependency>
</dependencies>
</dependencyManagement>
アプリで、新しいテスト モジュールから使用する依存関係を定義して、mvn dependency:tree
で確認できます。
トラブルシューティング
テストが壊れた場合
Selenium 2 から Selenium 3 に移行した後、既存の Selenium テストの一部が壊れる可能性があります。
通常、Selenium 3 のテストを更新するのに必要な作業はそれほど多くありません。
次の表では、壊れたテストを修正する出発点となるいくつかの基本的な例を示しています。別の事例が発生したら、この表に追加していきます。 テストの記述内容について正確にはわからないため、この表はすべてを網羅したものではありません。
エラー | ソリューション |
---|---|
| 代わりに Selenium から WebDriver を挿入します。 |
| JavaScriptExecutor を挿入し、代わりにそのメソッドを使用します。
|
記号が見つかりません [ERROR] symbol: method waitUntilElementIsNotLocated(org.openqa.selenium.By) | 代わりに Poller.waitUntil* メソッドと置き換えます。
|
| com.atlassian.webdriver.utils.Check#elementExists/elementIsVisible に置き換えます。 |
[ERROR] symbol: class Waiter | そのような用途を同等の com.atlassian.pageobjects.elements.query.Poller.waitUntil* メソッドまたは WebDriverPoller (該当する場合) に置き換えます。 |
| {{Poller.waitUntilTrue(element.timed().isPresent()); |
| 新しい Actions(driver).sendKeys().perform; に置き換えます。 |
| BrowserAware インターフェイスを挿入し、それを使ってブラウザーを取得します。 |
| MoreExecutors.newDirectExecutorService() に置き換えます。 |
| Poller.waitUntilTrue(pageElementFinder.find(By.id(".create-dialog-create-button")).timed().isEnabled()); |
| org.openqa.selenium.interactions.Locatable; |
| com.atlassian.pageobjects.browser.RequireBrowser に置き換えます。 |
プラグインが Jira の古いバージョンを使用している場合、AtlassianWebDriver が起動し、コンパイル エラーが発生する可能性があります。 | Jira 8.20.20 長期サポートリリース以上にアップグレードします。 |
パッケージの Jira オブジェクトに関連するエラー: com.atlassian.webdriver.jira | com.atlassian.jira.pageobjects に置き換えます。 |
ConfluenceTestedProduct などのページオブジェクトに関連する問題:
| Confluence コアの代わりに confluence-webdriver-pageobjects のクラスを使用してください。 com.atlassian.confluence.webdriver.pageobjects.ConfluenceTestedProduct |
AbstractInjectableWebDriverTest を拡張する任意のクラス | ConfluenceStatelessTestRunner に置き換えます。詳細は近日追加される予定です。 |
|
|