Как очистить поле веб-элемента - Groovy - PullRequest
0 голосов
/ 11 сентября 2018

В соответствии с главой 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()

Есть ли у меня другие возможности или подходы к этой проблеме, чтобы можно было вызвать метод для элемента, чтобы очистить ее?

Я не могу использовать метод селеном clear (), потому что основа искры, поддерживающая приложение, которое я тестирую, запрещает этот метод.

Ответы [ 3 ]

0 голосов
/ 11 сентября 2018

Один из вариантов, который вы можете попробовать, - это расширить или перезаписать класс WebElement, а затем добавить собственный метод clear(), который можно вызывать для элемента webDriver.

так что тогда вы могли бы просто сказать webElement.clear() вместо webElement << clear()

0 голосов
/ 13 сентября 2018

Самый простой способ очистить элемент в Geb - просто установить его значение в пустую строку:

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

Это вызовет метод clear() WebElement, так что если это не вариант, и вы действительно хотите выполнить комбинацию клавиш, как в вашем вопросе, тогда у вас есть два варианта. Мой предпочтительный вариант - написать модуль с методом clear():

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

И использовать его как:

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

Другой вариант - реализовать пользовательский навигатор и добавить туда метод clear().

0 голосов
/ 11 сентября 2018

Обязательно передайте используемый драйвер, чтобы вам не приходилось нажимать клавиши.Вы можете использовать .Clear () для очистки любого текста в текстовом поле.

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

или

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