Перейти к содержимому

Фотография

element.sendKeys("text") sends extra characters


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 10

#1 AndreyA

AndreyA

    Новый участник

  • Members
  • Pip
  • 11 сообщений
  • ФИО:AndreyA

Отправлено 24 августа 2017 - 09:11

Всем привет,

 

такой вопрос, не могу понять, почему отправляются и откуда вообще взялись лишние нолики при заполнении текстового поля через .sendKeys()

 

Firefox 55.0.2

Selenium 3.5.2

Geckodriver 0.18

OS Ubuntu 16.04

 

Code for start driver:

FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("browser.download.dir", downloadDir);
profile.setPreference("browser.download.folderList", 2);
profile.setPreference("browser.helperApps.neverAsk.saveToDisk", "application/force-download,application/x-rpm");
System.setProperty("webdriver.gecko.driver", "/usr/lib/firefox/geckodriver");
FirefoxOptions options = new FirefoxOptions();
options.setProfile(profile);
DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("moz:firefoxOptions", options);
driver = new FirefoxDriver(capabilities);

 

Code for test:

 

findElement(USERNAME).clear();
log("Sending username: " + userName); // for example, userName "admin"
findElement(USERNAME).sendKeys(userName);
log("From page: " + findElement(USERNAME).getAttribute("value"));

 

after start it successfully open browser, found login form, but insert 0admin00 instead of admin - это видно прямо в браузере

а при считывании обратно из этог текстового поля получает 0admin0 , т.е. снова не то, ни то, что хотели отправить, ни то, что он записал

 

log:
LoginPage.info()  - Searching element by locator: username
UITestBase.log()  - Sending username: admin
LoginPage.info()  - Searching element by locator: username
LoginPage.info()  - Searching element by locator: username
UITestBase.log()  - From page: 0admin0
 

 


  • 0

#2 Snap

Snap

    Специалист

  • Members
  • PipPipPipPipPip
  • 980 сообщений
  • ФИО:Роман
  • Город:Москва


Отправлено 24 августа 2017 - 16:41

С Ubuntu не работаю, была похожая проблема на Windows, но в Chrome. Помогла установка Английского языка как языка для ввода по умолчанию.

 

А если попробовать вместо команды sendKeys команду type, будет тоже самое?


  • 0

#3 AndreyA

AndreyA

    Новый участник

  • Members
  • Pip
  • 11 сообщений
  • ФИО:AndreyA

Отправлено 24 августа 2017 - 17:10

С Ubuntu не работаю, была похожая проблема на Windows, но в Chrome. Помогла установка Английского языка как языка для ввода по умолчанию.

 

А если попробовать вместо команды sendKeys команду type, будет тоже самое?

Спасибо за отклик, кроме английского, у меня других не установлено, он и так по умолчанию. А метод type он чей? у WebElement такого нету.


  • 0

#4 AndreyA

AndreyA

    Новый участник

  • Members
  • Pip
  • 11 сообщений
  • ФИО:AndreyA

Отправлено 24 августа 2017 - 17:22

еще интересный момент, если убрать clear()
// findElement(USERNAME).clear();
findElement(USERNAME).sendKeys(userName);

то первый 0 исчезает, отстается только последний "admin0"

 

P.S. cache and cookie чистил, галочка Remember logins for sites не установлена


  • 0

#5 Snap

Snap

    Специалист

  • Members
  • PipPipPipPipPip
  • 980 сообщений
  • ФИО:Роман
  • Город:Москва


Отправлено 24 августа 2017 - 17:23

 

С Ubuntu не работаю, была похожая проблема на Windows, но в Chrome. Помогла установка Английского языка как языка для ввода по умолчанию.

 

А если попробовать вместо команды sendKeys команду type, будет тоже самое?

Спасибо за отклик, кроме английского, у меня других не установлено, он и так по умолчанию. А метод type он чей? у WebElement такого нету.

 

Извиняюсь, перепутал - здесь команды type нет, в отличие от Selenium IDE :vava: .


  • 0

#6 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 28 августа 2017 - 11:02

Откуда берутся параметры имени и пароля?

Вдруг это не та кодировка, или у этих строк там символы конца строки не юниксовые, и они на нули заменяются....


  • 0

#7 AndreyA

AndreyA

    Новый участник

  • Members
  • Pip
  • 11 сообщений
  • ФИО:AndreyA

Отправлено 28 августа 2017 - 11:54

Откуда берутся параметры имени и пароля?

Вдруг это не та кодировка, или у этих строк там символы конца строки не юниксовые, и они на нули заменяются....

не юниксовых символов быть не может, у меня основная система ubuntu

значения подставляются из файла пропертей, но я также пробовал и plain text -ом писать, прямо в метод, результат не меняется

про кодировку тоже не уверен, ровно этот самый код работал на selenium 2.53.1 and Firefox 45
проблема пришла вместе с обновлением на последние достижения 3.5.2 и FF 55.0.2 + geckodriver 0.18, раньше его вообще не нужно было

надо думать еще...

 

Спасибо

Андрей


  • 0

#8 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 29 августа 2017 - 15:33

http://software-test...oj/#entry161834


  • 0

#9 AndreyA

AndreyA

    Новый участник

  • Members
  • Pip
  • 11 сообщений
  • ФИО:AndreyA

Отправлено 29 августа 2017 - 15:43

Круто! похоже то, что надо
попробую и напишу результат

 

Спасибо

Андрей


  • 0

#10 AndreyA

AndreyA

    Новый участник

  • Members
  • Pip
  • 11 сообщений
  • ФИО:AndreyA

Отправлено 29 августа 2017 - 15:57

 

Круто! похоже то, что надо
попробую и напишу результат

 

Спасибо

Андрей

 

Не, не помогло, 3.5.3 дало тот же результат "0admin0" :(


  • 0

#11 AndreyA

AndreyA

    Новый участник

  • Members
  • Pip
  • 11 сообщений
  • ФИО:AndreyA

Отправлено 30 августа 2017 - 11:11

Всем спасибо, проблема решена, извините за беспокойство

дело было не в селениуме и не в гекодрайвере

а вот update firefox from 45 to 55 скорее всего сыграл злую шутку

дело в том, что какое-то время назад я сталкивался с таким неприятным сайд-эффектом, как съезжание шапки страницы на середину при удаленных запусках через Jenkins (видно только на скриншотах)

поэтому периодически пропадали искомые элементы

метод борьбы был придумал такой

 

public void zoom_less(int zoom) {
    Actions builder = new Actions(getDriver());
    log("Zooming out");
    while (zoom != 0) {
      builder.sendKeys(Keys.chord(Keys.CONTROL, "-")).perform();
      zoom--;
    }
  }

  public void zoom_restore() {
    Actions builder = new Actions(getDriver());
    builder.sendKeys(Keys.chord(Keys.CONTROL, "0")).perform();
  }

 

соответсвенно, findElement() если не находил локатор, делал zoom- а потом возвращал на место

как оказалось, дело именно в этом zoom_restore()

в версии FF45+selenium2.53.1 работало builder.sendKeys(Keys.chord(Keys.CONTROL, "0")).perform();

а в текущей версии этот метод и добавлял нули

 

как-то так...

 

Спасибо

Андрей


  • 1


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных