根据此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框架支持我测试禁止该方法的应用程序。
答案 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()