回答您的问题:
如果可以迫使应用程序等待单击
:从技术上讲,的调用
click()由最终用户控制,该最终用户还是脚本/程序的所有者。同样,在功能上,您的脚本/程序无需等待,
click()但需要等待预期的
WebElement 可 交互 (即, clickable )。与该用例相似,在自动化测试用例时,您可能必须将快速移动的 WebDriver
实例与滞后的 Web Client 进行同步。为了实现这一目标, Selenium 为您提供了WebDriverWait
类 , 该类 可以与ExpectedConditions
类 一起使用 __。
预期条件
ExpectedConditions
类 使我们能够遵守许多条件。几个最广泛使用的 ExpectedConditions 如下:
- presentOfElementLocated(按定位器)
- visibleOfElementLocated(按定位器)
- elementToBeClickable(按定位器)
- frameToBeAvailableAndSwitchToIt(通过定位符)
- numberOfwindowsToBe(int ExpectedNumberOfWindows)
单击该按钮后,确定单击了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);
}@Overridepublic void beforeNavigateTo(String arg0, WebDriver arg1) { System.out.println("Just before beforeNavigateTo " + arg0);}}
控制台输出:
Just before beforeNavigateTo https://google.comInside the afterNavigateTo to https://google.comGoogle



