Как передать тест в поле, не стирая его текущее значение

Доброго времени суток. Не столь давно занялась автоматизацией тестирования (java + winium +robotframework) и столкнулась с тем, что надо именно дописать тест в поле, в котором уже что-то есть.

   spWindow.findElementById(Elements.numberBFieldID).sendKeys(numberOfSubscriberB);

Но sendKeys перед вводом символов очищает всё поле (ну или в случае с моей программой, т.к. выделить тест в окне Ctrl+A невозможно, просто удаляет последний символ). До этого в поле автоматически подставляется код региона, и хорошо бы ему и дальше там оставаться. Может быть, есть какие-то другие способы передавать текст, не очищающие поле?

Костыль: грабим значение поля, складываем с тем что нужно добавить, очищаем и вписываем в поле.

1 лайк

то есть костылей невозможно?( жаль, но спасибо)

Попробуйте
sendKeys(Keys.ARROW_RIGHT);
sendKeys(ваш_текст);

Ну или как-то sendKeys(Keys.ARROW_RIGHT + ваш_текст);
Должно сработать

Или Keys.END
В помочь https://selenium.googlecode.com/git/docs/api/java/org/openqa/selenium/Keys.html#END

проверила. перед sendKeys(Keys.ARROW_RIGHT) всё равно происходит Ctrl+A и одна цифра из поля удаляется(((

Вот описание метода Press Key на роботе для питона. Этот кейворд нажимает на инпут, курсор ставит в конец строки. Надеюсь поможет)

def press_key(self, locator, key):
        """Simulates user pressing key on element identified by `locator`.
        `key` is either a single character, a string, or a numerical ASCII code of the key
        lead by '\\\\'.
        Examples:
        | Press Key | text_field   | q |
        | Press Key | text_field   | abcde |
        | Press Key | login_button | \\\\13 | # ASCII code for enter key |
        """
        if key.startswith('\\') and len(key) > 1:
            key = self._map_ascii_key_code_to_key(int(key[1:]))
        element = self._element_find(locator, True, True)
        #select it
        element.send_keys(key)