Java等待HTML元素并通过WebDriverEventListener记录鼠标单击

时间:2018-03-19 16:33:59

标签: java selenium selenium-webdriver webdriver webdrivereventlistener

我正在开发一个java应用程序来帮助构建selenium测试,我想知道是否可以强制应用程序等待点击,然后点击后确定点击了html的哪个元素

问候

1 个答案:

答案 0 :(得分:1)

回答你的问题:

如果可以强制应用程序等待单击:从技术上讲,click()的调用由最终用户控制,最终用户也是脚本/程序的所有者。在功能上,您的脚本/程序无需等待click(),但需要等待预期的 WebElement 可交互(即可点击 )。与自动化测试用例时的用例类似,您可能必须将快速移动的 WebDriver 实例与滞后的 Web客户端同步。要实现 Selenium ,您可以使用WebDriverWait ,它可以与ExpectedConditions 结合使用。

ExpectedConditions

ExpectedConditions Class 使我们能够遵守众多条件。一些最广泛使用的 ExpectedConditions 如下:

之后点击确定点击了html的哪个元素:为了解决这个问题,你必须得到EventFiringWebDriver的帮助,这将注册一个 EventHandler 的实例。将实施WebDriverEventListener

EventFiringWebDriver

EventFiringWebDriver是任意 WebDriver 实例的包装器,它支持注册WebDriverEventListener,主要用于日志记录。

  • EventFiringWebDriver 程序的示例:

    EventFiringWebDriver eventDriver = new EventFiringWebDriver(driver);
    EventHandler handler = new EventHandler();
    eventDriver.register(handler);
    eventDriver.get("https://google.com");
    System.out.println(eventDriver.getTitle());
    

事件处理程序

  • EventHandler 类的示例:

     public class EventHandler implements WebDriverEventListener
     {
        @Override
        public void afterNavigateTo(String arg0, WebDriver arg1) {
            System.out.println("Inside the afterNavigateTo to " + arg0);
        }
    
        @Override
        public void beforeNavigateTo(String arg0, WebDriver arg1) {
            System.out.println("Just before beforeNavigateTo " + arg0);
        }
     }
    

控制台输出:

Just before beforeNavigateTo https://google.com
Inside the afterNavigateTo to https://google.com
Google