0

私はRobotFrameworkを初めて使用します(実際に新しいテスト自動化プロジェクトのために評価しています)。

以前は、Java とページ オブジェクトを使用して独自の小さなフレームワークを作成していましたが、今回は既存のフレームワークを使用できるかどうか疑問に思っています。Spock と Robot Framework を評価しています。

私の要件は、Web アプリケーション、Windows オブジェクト、およびモバイル アプリをテストして、Robot が Spock より確実に優位に立つことです。また、いつでもGroovyよりもPythonを好むでしょう。

私は通常、次のコードを使用してフレームワークで WebElement を拡張します。Robot Framework でそのようなことができるかどうか疑問に思っています。

//importing webdriver and other selenium libraries
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebDriverException;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.interactions.internal.Coordinates;
import org.openqa.selenium.internal.Locatable;
import org.openqa.selenium.internal.WrapsElement;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.FluentWait;
import org.openqa.selenium.support.ui.Wait;

//interface that will be implemented by my custom web element
interface MyElement extends WebElement, WrapsElement, Locatable {

}

//my custom web element class
public class MyWebElement implements MyElement {

    private WebElement element;

    //private constructor for my web element class
    private MyWebElement(WebElement element) {
        this.element = element;
    }

    //public factory method for my web element class
    public static MyWebElement getInstance(By by) {
        WebElement element = MyWebDriver.getInstance().findElement(by);
        MyWebElement myWebElement = new MyWebElement(element);
        return myWebElement;
    }

    //overriding WebElement method click
    @Override
    public void click() {
        waitUntilClickable();
        element.click();
    }

    //adding method waitUntilClickable to my web element
    public MyWebElement waitUntilClickable() {
        return waitUntilClickable(MyWebDriver.getTimeoutElementInMilliseconds(),
                MyWebDriver.getPollingElementInMilliseconds());
    }

    //adding helper method to implement waitUntilClickable
    public MyWebElement waitUntilClickable(long timeOutInMilliseconds,
            long pollingIntervalInMilliseconds) {
        Wait<WebDriver> wait = new FluentWait<WebDriver>(MyWebDriver.getInstance())
                .withTimeout(timeOutInMilliseconds, TimeUnit.MILLISECONDS)
                .pollingEvery(pollingIntervalInMilliseconds, TimeUnit.MILLISECONDS);
        wait.until(ExpectedConditions.elementToBeClickable(element));
        return this;
    }
   //other additional and overriding methods
   //.........................
   //.........................

Robot Framework はこれまでのところ良さそうです。私も python が好きです。しかし、上記の例で Java で行っていたように、selenium2library のようなライブラリを拡張して、独自のカスタム メソッドを持つことができるかどうかはわかりません。

4

2 に答える 2