我正在开发一个Java应用程序以帮助构建selenium测试,并且我想知道是否有可能强制该应用程序等待单击,然后在单击之后确定单击了HTML的哪个元素。
问候
回答您的问题:
如果可以迫使应用程序等待单击 :从技术上讲,的调用click()由最终用户控制,该最终用户还是脚本/程序的所有者。同样,在功能上,您的脚本/程序无需等待,click()但需要等待预期的 WebElement 可 交互 (即, clickable )。与该用例相似,在自动化测试用例时,可能必须将快速移动的 WebDriver 实例与滞后的 Web Client 进行同步。为了实现这一目标, Selenium 为您提供了WebDriverWait 类 , 该类 可以与ExpectedConditions 类 一起使用 __。
click()
ExpectedConditions 类 使我们能够遵守许多条件。几个最广泛使用的 ExpectedConditions 如下:
单击之后,确定单击了html的哪个元素 :为此,您必须借助EventFiringWebDriver,它将注册一个 EventHandler 实例,该实例将实现WebDriverEventListener
EventFiringWebDriver是任意 WebDriver 实例的包装,该实例主要用于记录目的,支持注册WebDriverEventListener。
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