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

Фотография

Вопросы по миграции с Sekenium 1.0 на 2.0


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

#41 stmark

stmark

    Опытный участник

  • Members
  • PipPipPipPip
  • 404 сообщений
  • ФИО:Докучаев Сергей
  • Город:Ярославль


Отправлено 28 сентября 2011 - 12:40

Demetri, думаю, не запрещается :)

http://www.casinometropol1.com


Используем такой локатор для ввода пароля: css=section.account>form>input.password-replaced
При этом до ввода возможно потребуется кликнуть опять по тому же локатору, что бы пропала надпись по-умолчанию.
  • 1

#42 JekaterinaGulbinova

JekaterinaGulbinova

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

  • Members
  • Pip
  • 13 сообщений

Отправлено 28 сентября 2011 - 12:58

Ок, вот, что мне помогло решить проблему:

try { WebElement pass = driver.findElement(By.className("password-replaced"));
	pass.click();
	try {
		WebElement pass2 = driver.findElement(By.id("tbPassword"));
		try { pass2.sendKeys("MyPassword");}
		catch (Exception e4) { System.out.println("cannot send keys to a hidden password field"); } 
	} catch (Exception e) {System.out.println("cannot find hidden password element.");}
} catch (Exception e) { System.out.println("Cannot find password field by class name 'password-replaced'");}

То есть, сначала я
нахожу видимое поле по className, которое у него будет, когда оно будет уже невидимым (ПОЧЕМУ так?????)
кликаю на него
И потом нахожу поле, которое уже стало видимым, но уже по id
и отправляю в него текст.

Как-то не по-человечески это всё. :nea:
  • 0

#43 JekaterinaGulbinova

JekaterinaGulbinova

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

  • Members
  • Pip
  • 13 сообщений

Отправлено 28 сентября 2011 - 13:44

Большое спасибо всем за помощь, без вас я бы не справилась!

Думаю, буду заходить к вам на форум частенько, раз уж мне посчастливилось работать с Селениумом. :good:
  • 0

#44 Demetri

Demetri

    Активный участник

  • Members
  • PipPip
  • 143 сообщений
  • ФИО:Дмитрий
  • Город:Podgorica, MNE


Отправлено 28 сентября 2011 - 13:54

А если сделать просто вот так?
driver.findElement(By.xpath("//input[@class='password-replaced placeholder']")).sendKeys(password);
У меня вроде работает :blush:
  • 1
Hi! I'm a signature virus. Copy me into your signature to help me spread.

#45 Leoxa

Leoxa

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

  • Members
  • Pip
  • 59 сообщений
  • ФИО:Алексей

Отправлено 28 сентября 2011 - 16:15

Как-то не по-человечески это всё. :nea:


Зато вы смогли научить селениум видеть сайт в понятном ему виде. :)

попробуйте еще искать так: driver.findElement(By.xpath("//input[contains(@class,'password-replaced')]")); такой локатор должен подойти к обоим состояниям поля. но возможно, что искать все-равно придется 2 элемента по 1 локатору. :)
  • 1

#46 JekaterinaGulbinova

JekaterinaGulbinova

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

  • Members
  • Pip
  • 13 сообщений

Отправлено 29 сентября 2011 - 06:52

А если сделать просто вот так?

driver.findElement(By.xpath("//input[@class='password-replaced placeholder']")).sendKeys(password);


Я попробовала. Очень странно такой локатор работает - как-то через раз, я решила все-таки придерживаться варианта с двойным поиском элемента. Но действительно, иногда срабатывает. И мне пока непонятно, от чего это зависит. :search:

попробуйте еще искать так: driver.findElement(By.xpath("//input[contains(@class,'password-replaced')]")); такой локатор должен подойти к обоим состояниям поля. но возможно, что искать все-равно придется 2 элемента по 1 локатору. :)


Да, такой локатор подходит к обоим элементам. Но искать их надо все-таки дважды, т.к. элементов все же два.. Спасибо за наводку, изучу получше xpath.
  • 0

#47 Leoxa

Leoxa

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

  • Members
  • Pip
  • 59 сообщений
  • ФИО:Алексей

Отправлено 29 сентября 2011 - 08:13

Спасибо за наводку, изучу получше xpath.


тогда пригодится этот гайдик: http://bit.ly/gTd5oc
  • 1


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

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