WebDriver 在找到时注册回调 [英] WebDriver registering a callback on found

查看:22
本文介绍了WebDriver 在找到时注册回调的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

当我搜索这样的元素时:

When I search for an element like this:

driver.findElement(By.id("myId")).isDisplayed();

如果找到元素,我想运行一些代码(使用找到的 WebElement 我将它滚动到视口的中间).我想对 findElement() 的所有调用都这样做,而不必每次调用它时都手动复制代码.

I want to run some code if the element is found (using the found WebElement I will scroll it to the middle of the viewport). I want to do this for all calls to findElement() without having to manually duplicate the code every time I call it.

有没有办法做到这一点?

Is there some way of doing this?

推荐答案

你可以通过实现 WebDriverEventListener.这是一个例子,

You can do such things by implementing WebDriverEventListener. Here is an example,

public class WebDriverListener implements WebDriverEventListener {
    private WebDriver webDriver;

    public WebDriverListener(WebDriver webDriver) {
        this.webDriver = webDriver;
    }

    public void afterFindBy(By findBy, WebElement element, WebDriver driver) {
        System.out.println("Found element now what??");
        //do whatever needs to be done after you find the element
    }
        ....
}

这是如何使用

   @Test
    public void test() {
        WebDriver driver = new FirefoxDriver();
        EventFiringWebDriver efwd = new EventFiringWebDriver(driver);
        WebDriverListener eventListener = new WebDriverListener(driver);
        efwd.register(eventListener);
        efwd.get("http://www.google.com");
        WebElement element = efwd.findElement(By.name("q"));
        efwd.quit();
    }

这篇关于WebDriver 在找到时注册回调的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆