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



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

问候

回答您的问题:

如果可以强制应用程序等待单击:从技术上讲,click()的调用由最终用户管理,最终用户也是脚本/程序的所有者。同样,从功能上讲,您的脚本/程序不需要等待click()而是需要等待预期的WebElement交互(即可点击)。与此用例类似,当您自动化测试用例时,您可能必须将快速移动的WebDriver实例与滞后的Web 客户端同步。为了实现这一点,Selenium为您提供了WebDriverWait类,该类可以与ExpectConditions结合使用。

预期条件

预期条件使我们能够遵守许多条件。几个最广泛使用的预期条件如下:

  • 存在元素定位(通过定位器)
  • 可见性元素定位(通过定位器)
  • 元素可点击(通过定位器)
  • frameToBeAvailableAndSwitchToIt(通过定位器)
  • numberOfwindowsToBe(int expectNumberOfWindows)

单击后确定单击了html的哪个元素:要解决此问题,您必须借助EventFireringWebDriver,它将注册EventHandler的实例,该实例将实现WebDriverEventListener

事件射击网络驱动程序

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

  • EventFireringWebDriver程序的示例:

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

事件处理程序

  • 事件处理程序类的示例:

    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

最新更新