Последовательность побега магии Watir?

В настоящее время я использую Watir с Firefox, и кажется, что когда я пытаюсь установить поле со следующим текстом:

@#$QWER7890uiop

Команда, которую я использую, следующая:

text_field(:имя, "пароль").value=("!@#$QWER7890uiop)

Я также пробовал это:

text_field(:имя, "пароль").set "!@#$QWER7890uiop)

Вводятся только первые 2 символа. Есть ли что-то, что я могу сделать, чтобы обойти эту функцию?


person Woot4Moo    schedule 13.08.2010    source источник
comment
У меня смутное воспоминание об этом! может вызвать проблемы (хотя, возможно, он использовал autoit с watir). Попробуйте переместить ! до конца и посмотреть, если вы получите больше символов.   -  person Paul Rubel    schedule 14.08.2010
comment
Было бы полезно увидеть, что вы на самом деле пробовали. В первом примере выше есть unclosed , во втором — extra ) и unclosed . Вы пытались установить другое поле (например, имя пользователя) со строкой пароля, чтобы увидеть, что watir на самом деле вводит в поле? Это, вероятно, очень поможет вам в отладке этого самостоятельно.   -  person mandersn    schedule 14.08.2010


Ответы (1)


Вам нужно экранировать строку, используя одинарные кавычки '.

text_field(:name, "password").value='"!@#$QWER7890uiop'

Многие символы заменяются внутри двойных кавычек.

  1. Управляющие последовательности, такие как \n, \t, \s и т. д., заменяются эквивалентными им символами. Полный список см. здесь.
  2. #{} где все, что заключено в фигурные скобки, интерпретируется как рубиновое выражение.
  3. #$something, где $something интерпретируется как глобальная переменная ruby. Это проблема с вашей цитатой выше, помимо того, что она не была прекращена.
  4. %s интерпретируется как выражение шаблона ERB (оно интерполируется). Например:
    puts "%s hours later" % 'Five'
    приводит к
    "Five hours later".
person Bernard    schedule 14.08.2010
comment
Какие символы нужно экранировать? Это! Это вызывает вопросы? - person Woot4Moo; 14.08.2010
comment
Я только что добавил список, о котором я знаю, в ответ выше. - person Bernard; 15.08.2010