Есть отличная удаленная работа для php+codeception+jenkins+allure+docker спецов. 100% remote! Присоединиться к проекту

Невозможно залогиниться с webdriver, как это обойти

webdriver
Теги: #<Tag:0x00007f7b64e8e680>

(Ezzr Qvap) #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 -->

(Oleksii Ihnatiuk) #2

Напишите какая у вас ошибка. Пример вашего кода.


(Ezzr Qvap) #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) #4

если я сделаю паузу на логине и войду через браузер на открытой странице, то потом селениум может продолжить выполнение


(Alexander) #5

На угад: может дело в том, что вместо обычного стрингового аргумента логина/пароля, вы передаете в .sendKeys массив? Попробуйте

wd.findElement(By.id(“navbar_username”)).sendKeys(NAME);
wd.findElement(By.id(“navbar_password”)).sendKeys(PASS);


(Ezzr Qvap) #6

дело в том что оно работало, но потом что-то сделали на сайте и перестало.
а селекторы верные, вы же видите.


(Pavel) #7

Если страница показана до логина, то в поле уже есть значение “Имя”. Когда вы используете метод sendKeys, то символы дописываются. В итоге в поле у вас “ИмяNAME”. Сначала очистите с помощью метода clear.

Когда запускаете скрипт, то значения правильные отправляются? Вы можете после отправки имени и пароля до нажатия submit проверить введеные значения. Для пароля, скорее всего понадобится прочитать аттрибут value.


(Ezzr Qvap) #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);
}

в воле имени вводится пароль :confused:


(Pavel) #9

Не перепутали местами String NAME, String PASS при вызове метода login?


(Ezzr Qvap) #10

таки ошибся в вызове метода логина - передавал два пароля…
так что и очищать не надо было
бывает :slight_smile:


(Oleksii Ihnatiuk) #11
  1. Когда вы смотрите как проходит тест, вы видете, что имя и пароль записаны верно и без ошибок в правильные поля?
  2. Если вы знаете на каком билде началось валится этот тест, можете узнать у разрабов что они поменяли.
  3. Можете попробовать все действия сделать через Actions.

(Ezzr Qvap) #12

см. выше, второпях неправильно вызывал метод ))


(Oleksii Ihnatiuk) #13

то есть сейчас уже все работает?)


(Ezzr Qvap) #14

код работает! всем спасибо!


(Oleksii Ihnatiuk) #15

Тогда нажмите на каком-то посте, что это правильный ответ, чтобы люди видели что вопрос решен.


(Ezzr Qvap) #16

хороший форум!