如何清除Web元素的字段-Groovy

时间:2018-09-11 14:59:24

标签: selenium selenium-webdriver groovy geb

根据此documentation的第4.10章:

要清除webElement的字段,我可以执行以下操作:

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

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

webElement.clear()

这种方法的外观如何?

我设法做到了这样:

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

webElement << clear()

对于此问题,我是否还有其他可能性或方法可以调用元素上的方法来清除它?

我无法使用硒方法clear()导致Spark框架支持我测试禁止该方法的应用程序。

3 个答案:

答案 0 :(得分:2)

清除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()方法。

答案 1 :(得分:-1)

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

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

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

答案 2 :(得分:-1)

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

所以您只需说webElement.clear()而不是webElement << clear()