2016-11-22 3 views
0

Я пытаюсь автоматизировать процесс регистрации в веб-приложении с помощью seleniumchrome). Когда страница загружается, появляется всплывающее окно, в котором запрашиваются учетные данные.автоматизировать вход в веб-приложение с использованием selenium

Я пробовал следующее.

  1. Просьба ввести имя пользователя в url - Не работает так.
  2. доступ по названию, полученному от инструмента разработчика chrome. - В части окна всплывающего окна нет имени. Это компонент .swf, где 'Allowscriptaccess' свойство установлено как 'sameDomain' (я не знаю, относится ли это релевантно.) В принципе, что popup является компонентом .swf, это то, что я понял.

Есть ли способ получить доступ к этому окну и ввести данные для входа в систему selenium. Заранее спасибо.

ответ

1

Непосредственно отправки формы

Вы, вероятно, не в состоянии передать имя пользователя/пароль в 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.

+0

Спасибо за тонну за ответ! –

+0

, прежде чем опробовать любой из предложенных вами вариантов - я забыл упомянуть здесь одну вещь. Когда я пытаюсь получить доступ к этому конкретному URL-адресу через chromeDriver, я получаю страницу, в которой говорится: «Этот плагин не поддерживается» (выглядит как symol). Если я вручную обращаюсь к URL-адресу, он отлично работает для меня и дает мне всплывающее окно для входа в систему. –

+0

Я не могу использовать Robot, поскольку мои целевые координаты продолжают меняться. Он представляет собой некоторую загрузку файла в нужные папки, положение который продолжает меняться. –

Смежные вопросы