Перейти к содержимому

Фотография

Запись команд в Java applet через Selenium IDE

Selenium IDE Java-applet java-апплет

  • Авторизуйтесь для ответа в теме
Сообщений в теме: 5

#1 Alexml

Alexml

    Новый участник

  • Members
  • Pip
  • 15 сообщений
  • ФИО:Мельничук Александр
  • Город:Киев

Отправлено 30 июня 2015 - 19:11

Всем привет.

Помогите пожалуйста разобраться с возможностью записи команд в Java-аплете через Selenium IDE.

 

Есть вот такие 2 поля(ниже на картинке): "Выберете папку с секретным ключом" и "Введите пароль к секретному ключу" которые нужно заполнить (одно поле уже заполнено по дефолту) и нажать на кнопку "Подписать и отправить" но поку не могу придумать как это сделать через Selenium IDE.

 

Прикрепленный файл  Selenium_applet.png   196,67К   2 Количество загрузок:

 

Я посмотрел через Firebug что все эти поля находятся внутри Java-апплета и простым путем комманды Selenium IDE туда не записываються.

Все записал через Selenium IDE, как описано в этой теме, а вот на послежднем шаге такой облом :-(

 

Нашел еще вот такую статью, там описано что есть возможность записать команды используя LiveConnect, но не могу понять как можно это реализовать.

 

Помогите пожалуйста, если есть возможность.

 

Спасибо.


  • 0

#2 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 871 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 30 июня 2015 - 20:33

Ни Selenium IDE, ни другие инструменты семейства Selenium не предоставляют возможностей для управления Java-апплетами.

 

Рекомендуется тестировать Java-апплеты отдельно, вне браузера, обычными инструментами, предназначенными для тестирования Java-приложений.


  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#3 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 871 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 30 июня 2015 - 20:35

Однако, как я понял, Вам не нужно тестировать апплет, нужно просто его как-то преодолеть, чтобы продолжить тестировать веб-приложение.

 

1) Можно для тестовых целей сделать альтернативный механизм авторизации (это надо обсуждать с разработчиками). Повышайте тестопригодность приложения.

 

2) Можно несколько несложных действий сделать при помощи "универсальных" инструментов типа Sikuli.


  • 0
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#4 Alexml

Alexml

    Новый участник

  • Members
  • Pip
  • 15 сообщений
  • ФИО:Мельничук Александр
  • Город:Киев

Отправлено 02 июля 2015 - 18:17

Однако, как я понял, Вам не нужно тестировать апплет, нужно просто его как-то преодолеть, чтобы продолжить тестировать веб-приложение.

 

1) Можно для тестовых целей сделать альтернативный механизм авторизации (это надо обсуждать с разработчиками). Повышайте тестопригодность приложения.

 

2) Можно несколько несложных действий сделать при помощи "универсальных" инструментов типа Sikuli.

 

Все верно. Сам апплет мне тестировать не нужно. Нужно просто как-то вписать пароль в поле "Введите пароль к секретному ключу" и нажать на кнопку "Подписать и отправить".

 

Я вот нашел еще одну статью про LiveConnect и там написано как можно упралять Java через JavaScript, но я не понимаю как это все запустить :-(

Также инфорамция про взаимодействие Java-апплетов и JavaScript есть тут.

 

Вообщем инфы много но как использовать не понимаю.
 
Может кто-нибудь сможет мне помочь.

  • 0

#5 Saga

Saga

    Новый участник

  • Members
  • Pip
  • 37 сообщений
  • ФИО:Maryna Kolesnik
  • Город:Киев


Отправлено 05 июля 2015 - 06:53

Почему бы не попробовать Sikuli + Selenium WD + Java? Я не знаю sikuli, но видела статью, где таким способом кликали по ссылке внутри апплета -- Automate Applet window by Selenium 2 and Sikuli

 

Может получится отправить нужный текст в поле как-нибудь так: 

Screen screen = new Screen();
Pattern img = Pattern("password.PNG");
WebDriver driver = new FirefoxDriver();
driver.get(URL);
//...
screen.type(img, "pass12345");
//...

  • 0

#6 Alexml

Alexml

    Новый участник

  • Members
  • Pip
  • 15 сообщений
  • ФИО:Мельничук Александр
  • Город:Киев

Отправлено 12 июля 2015 - 06:37

 

Почему бы не попробовать Sikuli + Selenium WD + Java? Я не знаю sikuli, но видела статью, где таким способом кликали по ссылке внутри апплета -- Automate Applet window by Selenium 2 and Sikuli

 

Может получится отправить нужный текст в поле как-нибудь так: 

Screen screen = new Screen();
Pattern img = Pattern("password.PNG");
WebDriver driver = new FirefoxDriver();
driver.get(URL);
//...
screen.type(img, "pass12345");
//...

 

Большое спасибо.

Написал как Вы посоветовали и все заработало  :smile:

Вот такой код получился:

_____________________________________________________________________________________________________________________

import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.openqa.selenium.firefox.FirefoxProfile;
import org.openqa.selenium.firefox.internal.ProfilesIni;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.sikuli.script.*;
import java.util.concurrent.TimeUnit;


/**
* Created by alexml on 7/2/15.
*/



public class OTP {
public static void main(String[] args) throws FindFailed, InterruptedException {


ProfilesIni profile = new ProfilesIni();
FirefoxProfile myprofile = profile.getProfile("default");
WebDriver driver = new FirefoxDriver(myprofile);
driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);


WebDriverWait wait = new WebDriverWait(driver, 30);

driver.navigate().to("https://ibank.otpbank.com.ua/");
wait.until(ExpectedConditions.elementToBeClickable(By.linkText("OTP online клиент (стандартный)")));
driver.findElement(By.linkText("OTP online клиент (стандартный)")).click();
wait.until(ExpectedConditions.elementToBeClickable(By.id("userLogin")));
driver.findElement(By.id("userLogin")).sendKeys("***");
driver.findElement(By.name("password")).sendKeys("***");
driver.findElement(By.id("key_password")).sendKeys("***");
driver.findElement(By.id("cert_path")).clear();
driver.findElement(By.id("cert_path")).sendKeys("***");
wait.until(ExpectedConditions.elementToBeClickable(By.id("enter_btn")));
driver.findElement(By.id("enter_btn")).click();
driver.switchTo().frame("menu");
wait.until(ExpectedConditions.elementToBeClickable(By.linkText("Операции с нац. валютой")));
driver.findElement(By.linkText("Операции с нац. валютой")).click();
driver.switchTo().defaultContent();
driver.switchTo().frame("topic");
wait.until(ExpectedConditions.elementToBeClickable(By.linkText("Создать документ")));
driver.findElement(By.linkText("Создать документ")).click();
wait.until(ExpectedConditions.elementToBeClickable(By.id("r_bank_id_control")));
driver.findElement(By.id("r_bank_id_control")).sendKeys("***");
driver.findElement(By.id("r_account_no")).sendKeys("***");
driver.findElement(By.id("r_descr")).sendKeys("***");
driver.findElement(By.id("r_idcode")).sendKeys("***");
driver.findElement(By.id("input_platpurp_code")).sendKeys("777");
driver.findElement(By.id("paymentpurpose")).sendKeys("***");
System.out.println("Test message" + "Object: ");
driver.findElement(By.id("summaVISUALi")).sendKeys("1");
JavascriptExecutor js = (JavascriptExecutor) driver;
js.executeScript("$('#summaVISUALi').blur()");
wait.until(ExpectedConditions.elementToBeClickable(By.id("divAppletBtn")));
driver.findElement(By.id("divAppletBtn")).click();

Screen screen = new Screen();
screen.click("\\images\\password.png", 0);
screen.click("\\images\\password.png", 0);
screen.type("***");

screen.click("\\images\\send.png", 0);

Thread.sleep(1000);
wait.until(ExpectedConditions.elementToBeClickable(By.name("returnBtn")));
driver.switchTo().defaultContent();
driver.switchTo().frame("tops");
wait.until(ExpectedConditions.elementToBeClickable(By.name("reportBtn")));
driver.findElement(By.name("reportBtn")).click();
}
}

______________________________________________________________________________________________________________________________________

 

Правда по картинке приходиться кликать 2 раза, с одного раза бывает что Sikuli прамахиваеться и пишет с первую ячейку вместо второй.

 

Спасибо.


  • 0



Темы с аналогичным тегами Selenium IDE, Java-applet, java-апплет

Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных