我正在开发一个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