一尘不染

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

selenium

我正在开发一个Java应用程序以帮助构建selenium测试,并且我想知道是否有可能强制该应用程序等待单击,然后在单击之后确定单击了HTML的哪个元素。

问候


阅读 427

收藏
2020-06-26

共1个答案

一尘不染

回答您的问题:

如果可以迫使应用程序等待单击
:从技术上讲,的调用click()由最终用户控制,该最终用户还是脚本/程序的所有者。同样,在功能上,您的脚本/程序无需等待,click()但需要等待预期的
WebElement交互 (即, clickable )。与该用例相似,在自动化测试用例时,可能必须将快速移动的 WebDriver
实例与滞后的 Web Client 进行同步。为了实现这一目标, Selenium 为您提供了WebDriverWait

该类 可以与ExpectedConditions

一起使用 __。

预期条件

ExpectedConditions

使我们能够遵守许多条件。几个最广泛使用的 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
2020-06-26