ezzr_qvap
(Ezzr Qvap)
10.Май.2017 18:32:56
#1
Не могу залогиниться с webdriver, но если делать тоже самое вручную то проходит вход.
Как такое обойти на сайте?
<!-- login form -->
<form action="login.php?do=login" method="post" onsubmit="md5hash(vb_login_password, vb_login_md5password, vb_login_md5password_utf, 0)">
<script type="text/javascript" src="clientscript/vbulletin_md5.js?v=387"></script>
<table cellpadding="0" cellspacing="3" border="0">
<tr>
<td class="smallfont" style="white-space: nowrap;"><label for="navbar_username">Имя</label></td>
<td><input type="text" class="bginput" style="font-size: 11px" name="vb_login_username" id="navbar_username" size="10" accesskey="u" tabindex="101" value="Имя" onfocus="if (this.value == 'Имя') this.value = '';" /></td>
<td class="smallfont" nowrap="nowrap"><label for="cb_cookieuser_navbar"><input type="checkbox" name="cookieuser" value="1" tabindex="103" id="cb_cookieuser_navbar" accesskey="c" />Запомнить?</label></td>
</tr>
<tr>
<td class="smallfont"><label for="navbar_password">Пароль</label></td>
<td><input type="password" class="bginput" style="font-size: 11px" name="vb_login_password" id="navbar_password" size="10" tabindex="102" /></td>
<td><input type="submit" class="button" value="Вход" tabindex="104" title="Введите ваше имя пользователя и пароль, чтобы войти, или нажмите кнопку 'Регистрация', чтобы зарегистрироваться." accesskey="s" /></td>
</tr>
</table>
<input type="hidden" name="s" value="" />
<input type="hidden" name="securitytoken" value="1494435076-6acf057fb2e17e28bd5679c57501a85f896b4310" />
<input type="hidden" name="do" value="login" />
<input type="hidden" name="vb_login_md5password" />
<input type="hidden" name="vb_login_md5password_utf" />
</form>
<!-- / login form -->
CrispusDH
(Oleksii Ihnatiuk)
10.Май.2017 18:51:38
#2
Напишите какая у вас ошибка. Пример вашего кода.
ezzr_qvap
(Ezzr Qvap)
10.Май.2017 18:57:34
#3
private void login(WebDriver wd, String NAME, String PASS) {
wd.findElement(By.id("navbar_username")).sendKeys(new String[] {NAME} );
wd.findElement(By.id("navbar_password")).sendKeys(new String[] {PASS} );
wd.findElement(By.className("button")).click();
}
на мой код сайт отвечает, что неправильный логин-пароль
ezzr_qvap
(Ezzr Qvap)
10.Май.2017 19:00:25
#4
если я сделаю паузу на логине и войду через браузер на открытой странице, то потом селениум может продолжить выполнение
На угад: может дело в том, что вместо обычного стрингового аргумента логина/пароля, вы передаете в .sendKeys массив? Попробуйте
wd.findElement(By.id(“navbar_username”)).sendKeys(NAME);
wd.findElement(By.id(“navbar_password”)).sendKeys(PASS);
ezzr_qvap
(Ezzr Qvap)
10.Май.2017 19:03:54
#6
дело в том что оно работало, но потом что-то сделали на сайте и перестало.
а селекторы верные, вы же видите.
BPS
(Pavel)
10.Май.2017 19:28:51
#7
ezzr_qvap:
value=“Имя”
Если страница показана до логина, то в поле уже есть значение “Имя”. Когда вы используете метод sendKeys, то символы дописываются. В итоге в поле у вас “ИмяNAME”. Сначала очистите с помощью метода clear.
Когда запускаете скрипт, то значения правильные отправляются? Вы можете после отправки имени и пароля до нажатия submit проверить введеные значения. Для пароля, скорее всего понадобится прочитать аттрибут value.
ezzr_qvap
(Ezzr Qvap)
10.Май.2017 19:38:59
#8
оставил такой код
private void login(WebDriver wd, String NAME, String PASS) throws InterruptedException {
WebElement e1 = wd.findElement(By.id("navbar_username"));
e1.clear();
e1.sendKeys(new String[] {NAME} );
Thread.sleep(15000);
}
в воле имени вводится пароль
BPS
(Pavel)
10.Май.2017 19:46:00
#9
Не перепутали местами String NAME, String PASS при вызове метода login?
ezzr_qvap
(Ezzr Qvap)
10.Май.2017 19:50:10
#10
таки ошибся в вызове метода логина - передавал два пароля…
так что и очищать не надо было
бывает
ezzr_qvap
(Ezzr Qvap)
10.Май.2017 19:55:29
#12
CrispusDH:
правильные поля?
см. выше, второпях неправильно вызывал метод ))
CrispusDH
(Oleksii Ihnatiuk)
10.Май.2017 19:56:09
#13
то есть сейчас уже все работает?)
ezzr_qvap
(Ezzr Qvap)
10.Май.2017 19:56:55
#14
код работает! всем спасибо!
CrispusDH
(Oleksii Ihnatiuk)
10.Май.2017 19:58:36
#15
Тогда нажмите на каком-то посте, что это правильный ответ, чтобы люди видели что вопрос решен.