覆盖抽象类WebElementFacade中的一些方法

时间:2017-01-25 11:21:07

标签: java angularjs selenium override abstract-class

在Angular站点上使用Selenium进行测试可能会非常棘手,因为webDriver在与元素交互之前发现很难知道所有异步进程何时完成。

我通过编写一个动作类来解决这个问题,在使用Paul Hammants ngWebDriver(Java)执行动作(点击,填充,检查等)之前,我等待Angular:

import com.paulhammant.ngwebdriver.NgWebDriver;

public class ActionsWithWaits {

    private NgWebDriver ngdriver;
    private JavascriptExecutor js;

    public ActionsWithWaits(){
        WebDriver driver = getDriver();
        js = (JavascriptExecutor) driver;
        driver.manage().timeouts().setScriptTimeout(9, TimeUnit.SECONDS);
        ngdriver = new NgWebDriver(js);
    }


    public void waitForAngular(){
        ngdriver.waitForAngularRequestsToFinish();
    }

    public void waitAndClick(WebElementFacade button){
        waitForAngular();
        button.click();
    }

    public void waitAndFillIn(String text, WebElementFacade field){
        waitForAngular();
        field.type(text);
    }

等。 我现在使用这些操作而不是标准的WebElement(Facade)方法(click(),type()等)并且它工作正常。

但是,我觉得它可以更优雅,例如覆盖那些WebElementFacade方法。 (这样他们将首先执行我的waitForAngular,然后只需点击 - 或者输入,或者其他任何 - 就像正常一样)

我尝试了几件事,比如扩展WebElementFacade,但这是一个抽象类,所以我必须实现它,这还有很多其他的困难......

我是新手,所以我有点卡在这里..我只想覆盖其中一些方法。有人有关于如何实现这一目标的建议吗?

0 个答案:

没有答案