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

Не могу залогиниться с 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 -->

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

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

на мой код сайт отвечает, что неправильный логин-пароль

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

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

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

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

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

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

оставил такой код

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:

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

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

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

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

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

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

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

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