如何清除网页元素的字段 - Groovy

How to clear the field of web element - Groovy

根据本 documentation 的第 4.10 章:

要清除 webElement 的字段,我可以这样做:

webElement << Keys.chord(Keys.CONTROL, "a", Keys.BACK_SPACE)

但对我来说它看起来不干净。 有没有一种方法可以编写一个名为 "clear" 的方法,该方法可以在 webElement 上调用,并且该方法的调用看起来像这样?

webElement.clear()

这个方法会是什么样子?

我设法做到了这样的事情:

def clear() {
    return Keys.chord(Keys.CONTROL, "a", Keys.BACK_SPACE)
}

webElement << clear()

我是否有其他可能性或方法来解决这个问题,以便能够调用元素上的方法来清除它?

我无法使用 selenium 方法 clear(),因为支持我测试的应用程序的 spark 框架禁止使用此方法。

请确保传递您正在使用的驱动程序,这样您就不必使用按键。您可以使用 .Clear() 清除文本框中的任何文本。

def Clear(driver):
    elem = driver.find_element_by_name("elementName")
    elem.clear()

def Clear(driver):
    driver.execute_script('document.getElementsByName('schedule')[0].value = ''')

您可以尝试的一个选项是扩展或覆盖 WebElement class,然后添加您自己的 clear() 可以在 webDriver 元素上调用的方法。

所以你可以说 webElement.clear() 而不是 webElement << clear()

清除 Geb 中元素的最简单方法是简单地将其值设置为空字符串:

$(“input”).value(“”)

这将调用 WebElement 的 clear() 方法,因此如果这不是一个选项并且您实际上想要执行问题中的按键组合,那么您有两个选择。我的首选是使用 clear() 方法编写模块:

class ManuallyCleared extends Module {
    void clear() {
         leftShift Keys.chord(Keys.CONTROL, “a”, Keys.SPACE)
    }
}

并且像这样使用它:

$(“input”).module(ManuallyCleared).clear()

另一种选择是实现 custom navigator 并在其中添加 clear() 方法。