根据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框架禁止这个方法。
清除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()
方法。
请务必通过您正在使用的驱动程序,这样您就不必使用按键。您可以使用.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类,然后添加您自己的clear()
方法,该方法可以在webDriver元素上调用。
所以你可以说webElement.clear()
而不是webElement << clear()