1

だから私は、Selenium でテストしている Web サイト用の Panel オブジェクト API を書いています。これは、将来、私の管理外の多くの人々によって使用される可能性が高いため、防御的にすることもできると思いました (効果的な Java で見られる)。しかし、By のクローンを返すということになると、私は壁にぶち当たりました。

arrayList のようなメソッドを期待していました:

By newBy = new By(oldBy);

By は静的に作成されるため存在しません。さらに、 By を除いて、情報がそこにあると、 By から情報を取得する方法がわかりませんtoString()。だから私は のパーサーを書くことができますBy.toString()が、それは仕事が何であるかについて多くの努力のように思え、起動するのはあまりエレガントではありません.

セレンでByロケーターをクローンするより面倒でない方法を誰かが提案できますか?

4

2 に答える 2

1

これは単なる代替手段です。

防御的プログラミングに関して、私がお勧めできることの 1 つは、Selenium を使用して他のいくつかの自動化フレームワークで実行したことです...

をラップしてから、driver.findElementCSS セレクター、ID、Xpath など、必要なものだけを受け入れます。例は次のとおりです。

@Config(
    url="http://wordpress.org",
    browser = Browser.CHROME
)
public class GettingStarted extends AutomationTest {
    @Test
    public void testSeleniumHQ() {
        navigateTo("http://docs.seleniumhq.org")
        .click("a[title='Selenium Projects']")
        .click(By.xpath("//div[contains(@class, 'bigMenu')]//p/a[@href='webdriver/']"))
        .validateTextPresent("Selenium 1.0 + WebDriver = Selenium 2.0")
        ;
    }
}

( Getting Started with Selenium フレームワークを使用してこのクラスから抜粋)

ここでclickは、文字列 (CSS セレクター) を受け入れるようにオーバーロードされていますが、Byクラスも受け入れることができます。

すべての開発者に特定のものを使用してもらいたい場合は、By. これにより、少しきれいになり、間違いなくより統合されます。(テスターは、CSS または選択したものを使用することを余儀なくされます)

于 2014-11-11T20:55:56.143 に答える