Непосредственно отправки формы
Вы, вероятно, не в состоянии передать имя пользователя/пароль в URL из-за того, что реализация на стороне сервера ожидает, Content-Type
быть application/x-www-form-urlencoded
, multipart/form-data
или application/json
.
Вместо использования https://mywebsite.com/login?username=myusername&password=mypassword
вы, вероятно, нужно использовать что-то вроде:
Content-Type: application/x-www-form-urlencoded; charset=utf-8
Host: mywebsite.com
Connection: close
User-Agent: Some User Agent
Content-Length: xxx
username=myusername&password=mypassword
Заголовок User-Agent
часто бывает необходимо не забиваются на стороне сервера (403 Forbidden).
Один из способов проверки на самом деле это использовать Firebug или Инструменты разработчика Chrome проверить, как регистрационные данные будут отправлены на сервер и имитировать это поведение.
Использование Selenium с HTML форме
Использование Selenium Вы также можете заполнить форму.
Если он открывается в новом окне/вкладке/всплывающем окне, вы можете выбрать нужное окно. Предполагая, что driver
- это WebDriver, который вы используете.
ArrayList<String> tabs = new ArrayList<String>(driver.getWindowHandles());
for (String tab : tabs) {
driver.switchTo().window(tab);
// Either get it by its url
if (driver.getCurrentUrl().equals("https://mywebsite.com/my-login") {
// Do the login
}
// Detect based on HTML on the page
if (driver.findElement(By.cssSelector(".my-form-class #my-form-id")).size() != 0) {
// Do the login
}
}
Когда экран входа в систему загружается JavaScript, вы можете дождаться появления элемента в DOM. Опять же, предполагая, что драйвер - это WebDriver, который вы используете.
WebDriverWait wait = new WebDriverWait(driver, 15);
wait.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector(".my-form-class #my-form-id")));
Теперь вы можете заполнить форму:
driver.findElement(By.cssSelector(".my-form-class .username")).sendKeys("your-actual-username");
driver.findElement(By.cssSelector(".my-form-class .password")).sendKeys("your-actual-password");
driver.findElement(By.cssSelector(".my-form-class .submit-button")).click();
Написать код для проверки входа в систему.
Взаимодействуя со вспышкой
Если Войти является актуальной задачей флэш, вы, вероятно, вынуждены использовать класс Java Robot. Тем самым выполняя последовательность шагов:
mouseMove
на месте поля имя пользователя/адрес электронной
mousePress
щелкнуть поле формы
keyPress
заполнить вас имя пользователя
Повторите для пароля и кнопку отправки. Проверьте, действительно ли логин был успешным.
Кроме того, вы можете использовать каркас conductor, который может облегчить тестирование с помощью Selenium.
Спасибо за тонну за ответ! –
, прежде чем опробовать любой из предложенных вами вариантов - я забыл упомянуть здесь одну вещь. Когда я пытаюсь получить доступ к этому конкретному URL-адресу через chromeDriver, я получаю страницу, в которой говорится: «Этот плагин не поддерживается» (выглядит как symol). Если я вручную обращаюсь к URL-адресу, он отлично работает для меня и дает мне всплывающее окно для входа в систему. –
Я не могу использовать Robot, поскольку мои целевые координаты продолжают меняться. Он представляет собой некоторую загрузку файла в нужные папки, положение который продолжает меняться. –