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-pomconfluence-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 のテストを更新するのに必要な作業はそれほど多くありません。 

次の表では、壊れたテストを修正する出発点となるいくつかの基本的な例を示しています。別の事例が発生したら、この表に追加していきます。 テストの記述内容について正確にはわからないため、この表はすべてを網羅したものではありません。

エラー

ソリューション

cannot find symbol

[ERROR] symbol: class
AtlassianWebDriver

代わりに Selenium から WebDriver を挿入します。



cannot find symbol

[ERROR] symbol: method
executeScript(java.lang.String)

JavaScriptExecutor を挿入し、代わりにそのメソッドを使用します。

import javax.inject.Inject; @Inject
private static JavascriptExecutor executor;

cannot find symbol

[ERROR] symbol: method
waitUntilElementIsVisible(org.openqa.selenium.By)

cannot find symbol

[ERROR] symbol: method
waitUntilElementIsLocated(org.openqa.selenium.By)

cannot find symbol

[ERROR] symbol: method
waitUntilElementIsNotVisible(org.openqa.selenium.By)

記号が見つかりません

[ERROR] symbol: method waitUntilElementIsNotLocated(org.openqa.selenium.By)

代わりに Poller.waitUntil* メソッドと置き換えます。 

Poller.waitUntilTrue(pageElementFinder.find(…).timed().isVisible()) Poller.waitUntilTrue(pageElementFinder.find(…).timed().isPresent()) Poller.waitUntilFalse(pageElementFinder.find(…).timed().isVisible()) Poller.waitUntilFalse(pageElementFinder.find(…).timed().isPresent())

cannot find symbol

[ERROR] symbol: method
elementExists(org.openqa.selenium.By)

cannot find symbol [ERROR] symbol: method
elementIsVisible(org.openqa.selenium.By)

com.atlassian.webdriver.utils.Check#elementExists/elementIsVisible に置き換えます。

cannot find symbol

[ERROR] symbol: class Waiter

そのような用途を同等の com.atlassian.pageobjects.elements.query.Poller.waitUntil* メソッドまたは WebDriverPoller (該当する場合) に置き換えます。

cannot find symbol

[ERROR] symbol: method toggle()

{{Poller.waitUntilTrue(element.timed().isPresent());
element.click();}} に置き換えます。

cannot find symbol

[ERROR] symbol: method getKeyboard()

新しい Actions(driver).sendKeys().perform; に置き換えます。

cannot find symbol

[ERROR] symbol: method getBrowser()

BrowserAware インターフェイスを挿入し、それを使ってブラウザーを取得します。

cannot find symbol

[ERROR] symbol: static sameThreadExecutor

MoreExecutors.newDirectExecutorService() に置き換えます。

waiter.until(30).element(By.cssSelector(".create-dialog-create-button")).isEnabled();

Poller.waitUntilTrue(pageElementFinder.find(By.id(".create-dialog-create-button")).timed().isEnabled());

org.openqa.selenium.internal.Locatable;

org.openqa.selenium.interactions.Locatable;

import com.atlassian.webdriver.testing.annotation.TestBrowser;

com.atlassian.pageobjects.browser.RequireBrowser に置き換えます。

プラグインが Jira の古いバージョンを使用している場合、AtlassianWebDriver が起動し、コンパイル エラーが発生する可能性があります。

Jira 8.20.20 長期サポートリリース以上にアップグレードします。

パッケージの Jira オブジェクトに関連するエラー:

com.atlassian.webdriver.jira

com.atlassian.jira.pageobjects に置き換えます。

ConfluenceTestedProduct などのページオブジェクトに関連する問題:

com.atlassian.confluence.pageobjects.ConfluenceTestedProduct

Confluence コアの代わりに confluence-webdriver-pageobjects のクラスを使用してください。

com.atlassian.confluence.webdriver.pageobjects.ConfluenceTestedProduct

AbstractInjectableWebDriverTest を拡張する任意のクラス

ConfluenceStatelessTestRunner に置き換えます。詳細は近日追加される予定です。

com.atlassian.confluence.it.User および com.atlassian.confluence.it.* の別のクラス (スペースやページなど) が見つかりませんでした

com.atlassian.confluence.test の関連クラスに置き換えます (例: com.atlassian.confluence.test.api.model.person.UserWithDetails)。

最終更新日 2023 年 7 月 17 日

この内容はお役に立ちましたか?

はい
いいえ
この記事についてのフィードバックを送信する
Powered by Confluence and Scroll Viewport.