如何清除web元素的领域 - Groovy

问题描述 投票:0回答:3

根据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框架禁止这个方法。

selenium selenium-webdriver groovy geb
3个回答
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
投票

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

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

要么

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

-1
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.