Я новичок в RobotFramework (фактически оцениваю его для нового проекта автоматизации тестирования).Расширение selenium2library WebElement в RobotFramework
В прошлом я всегда создавал свои собственные рамки с использованием объектов Java и страниц, но на этот раз мне интересно, могу ли я использовать существующую инфраструктуру. Я оцениваю Spock и Robot Framework.
Мое требование - протестировать веб-приложение, объекты Windows и мобильные приложения, чтобы робот определенно имел преимущество над Spock. Также я бы предпочел Python над Groovy в любой день.
Я обычно расширяю 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 выглядит хорошо до сих пор, я тоже люблю питон .. но я не знаю, буду ли я в состоянии расширить библиотеки как selenium2library иметь свои собственные методы, как я делал в java в приведенных выше примерах.
Какова ваша фактическая цель? Является ли ваша фактическая цель переопределять методы webelement или ваша цель действительно облегчить вызов функций селена, которые ведут себя так, как вы хотите (например: добавление дополнительных протоколов, ожидание и т. Д.)? Другими словами, переопределяет метод клика цель или просто средство для достижения цели? –