私は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 のようなライブラリを拡張して、独自のカスタム メソッドを持つことができるかどうかはわかりません。