java - 在Java中包装Selenium wait.until函数,函数作为参数

标签 java selenium

我是 Java 新手,有一个问题: 有没有一种干净的方法可以将下面的代码包装在一个函数中,该函数可以获取任何表达式(由箭头指向)作为参数?

Foo A, B;
...

try {
    wait.until(new Function<WebDriver, Boolean>() {
        public Boolean apply(WebDriver driver) {
            return A.equals(B); // <=================== some expression 
        }
}
catch (Exception ex) {
  return false;
}
return true;

最佳答案

您需要一个接口(interface)或一个抽象类来执行此操作。在这种情况下,接口(interface)(两者中的一个)是更好的选择。

如果一个类实现了一个接口(interface),那么它必须具有接口(interface)中列出的函数。因此,当您在函数中接受接口(interface)时,您就知道该对象已列出该函数(并且您可以调用它)。

您将像这样定义一个接口(interface):

public interface Test {
    public boolean passedTest();
}

然后您将定义实现测试的类:

public EqualsTest implements Test {
    private Foo A, B;
    public EqualsTest(Foo A, Foo B){
        this.A = A;
        this.B = B;
    }
    @Overrides
    public boolean passedTest(){
        return A.equals(B);
    }
} 

那么你的函数将如下所示:

public waitUntil(Test test){
    try{
        wait.until(new Function<WebDriver, Boolean>() {
            public Boolean apply(WebDriver driver) {
                return test.passedTest()
            }
        }
    } catch( Exception ex){
        return false;
    }
    return true;
}

关于java - 在Java中包装Selenium wait.until函数,函数作为参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25386295/

相关文章:

java - 一个简单的 java classCastException

ruby - 需要用 capybara(ruby) 在某个坐标点点击、按住并移动

selenium - 是否可以自动打开 Google Chrome devtools?

javascript - Selenium TestNG 框架无法在多个测试中调用驱动程序对象

java - 使用 Canvas 正确绘制点

java - 使用正则表达式捕获一组连续数字

java - 错误 : mongodb. jdbc.MongoDriver 未加载。您确定已在 :jdbc_driver_library? 中包含正确的 jdbc 驱动程序吗

java - 使用 Tomcat 或 Node.js 的 RESTful API?

javascript - Protractor :缩小

java - 通过 PID 进程杀死 Selenium 浏览器 [Java]