为啥可点击的预期条件不执行 click()?

Posted

技术标签:

【中文标题】为啥可点击的预期条件不执行 click()?【英文标题】:Why expected conditions of clickable doesn't perform click()?为什么可点击的预期条件不执行 click()? 【发布时间】:2021-10-12 15:45:12 【问题描述】:

为什么 waitForElementToBeClickable 的 Selenium 预期条件没有内置 click() 方法? Selenium 知道我正在等待元素可点击,那么为什么我必须对该元素执行 driver.click() 的附加操作? 他们至少可以在那里添加某种标志,以便在满足预期条件时执行或不执行click()

【问题讨论】:

【参考方案1】:

org.openqa.selenium.support.ui.ExpectedConditions.elementToBeClickable(By locator) 返回 WebElement 对象,它不是 void。您可以将 click() 添加到自定义 void:

public static void waitForClickableAndClick(WebDriver driver, By by, int waitSeconds) 
    try 
        new WebDriverWait(driver, waitSeconds).until(ExpectedConditions.elementToBeClickable(by)).click();
    
    catch (Exception exception) 
        exception.printStackTrace();
    

【讨论】:

还是为什么没有点击?为什么我需要 WebElement ,我想最终点击它 如果您的测试没有执行点击,您的代码是否会抛出任何异常?或者有什么问题? 没有错误,问题只是详细说明为什么硒家伙没有将click()添加到waitForElementToBeClickable,如果无论如何我想做的是单击元素他可以点击的时间 不仅仅是这个案子。您可以在许多其他 API 中观察到类似的 void 'absence'(源代码会非常大且不必要地大)。您(在 SO 社区的帮助下)能够创建自定义方法,即使在即将进行的项目中也可以重复使用。 问题还在,为什么他们给我留下完成方法的路?

以上是关于为啥可点击的预期条件不执行 click()?的主要内容,如果未能解决你的问题,请参考以下文章

为啥即使条件为假,这个“IF”也总是执行?

delphi 界面中点击按钮创建的窗体为啥在FormCreate中初始化代码?

为啥我的硒预期条件不能作为 python if 语句中的条件工作?

为啥这个 javascript 命令不执行?

怎么让click事件在指定时间内只响应一次,jquery。

js click事件防止重复点击