2015-03-27 2 views
2

Я хочу автоматизировать определенные задачи, которые необходимо пройти через Remote Desktop Connection.Автоматизация через удаленный рабочий стол с использованием Selenium и AutoIt

Я поделюсь с кодом, который я написал до сих пор.

public class MainClass 
{ 
    static WebDriverWait wait; 
    static WebDriver driver; 
    public static void main(String args[]) 
    { 
    driver = new HtmlUnitDriver(true); 
    driver.get("https://mysite"); 
    WebElement submit_element=driver.findElement(By.id("Log_On")); 
    driver.findElement(By.id("Enter user name")).sendKeys("my_username"); 
    driver.findElement(By.name("passwd")).sendKeys("my_password"); 
    submit_element.click(); 
    driver.findElement(By.id("folderLink_0")).click(); 
    driver.findElement(By.id("folderLink_2")).click(); 
    driver.manage().timeouts().implicitlyWait(100, TimeUnit.SECONDS); 
    System.out.println(driver.getPageSource()); 
    driver.findElement(By.id("idCitrix.M")).click(); 
    System.out.println(driver.getPageSource()); 
    } 
} 

Строка кода

`driver.findElement(By.id("idCitrix.M")).click();` 

открывает удаленный рабочий стол в новом окне.

Линия

`System.out.println(driver.getPageSource());` 
is retrieving the same code in both places. 

Я считаю, что это не может быть сделано исключительно селеном. Просматривая через Интернет, я узнал, что это можно сделать, используя AutoIt.

Как я могу это сделать?

+1

Как ответ до сих пор работает для вас? Насколько я знаю, хотя AutoIt автоматизирует Windows, он может не работать с объектами Windows через сеанс удаленного рабочего стола. Чтобы справиться с этим, вам нужно, чтобы AutoIt работал на фактическом удаленном настольном компьютере, к которому вы подключаетесь, а не в AutoIt на компьютере веб-браузера, с которым вы используете удаленный рабочий стол (клиент). – David

+1

Да, это не сработало –

ответ

3

Selenium может использоваться для частей, которые автоматизируют ваш веб-браузер, в то время как AutoIT следует использовать для автоматизации приложений Windows (в вашем случае, вероятно, он входит в удаленную машину).

Эта ссылка обеспечивает хорошую информацию о том, как использовать AutoIT Alongwith Селен: http://www.toolsqa.com/selenium-webdriver/autoit-selenium-webdriver/

Вот что вы должны сделать:

Скачать/установить AutoIT
Вы сможете создавать .au3 скрипты с помощью AutoItSciTe редактор Компиляция скрипт .au3 даст вам EXE-файл Затем вы можете вызвать .exe файл из Selenium сценария с помощью

Runtime.getRuntime().exec("D:\AutoIt\AutoItTest.exe"); 

Вы можете получить свойства окна с помощью AutoIt Window Info (x86) или (x64). Пример, строка заголовка/состояния окна.

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

Ниже приведен пример сценария, который автоматизирует проверку подлинности Http:

WinWaitActive("Web page title","","10") 
If WinExists("Web page title") Then 
Send("userid{TAB}") 
Send("password{Enter}") 
EndIf 

Ниже сценарий получает текст, присутствующий в строке состояния блокнота:

WinWaitActive("Untitled - Notepad", "", 30) 
Local $hWnd = WinGetHandle("Untitled - Notepad") 
Local $sText = StatusbarGetText("Untitled - Notepad","",2) 
ConsoleWrite($sText) 

Я надеюсь, что эта информация поможет!

Update: После дальнейшего поиска, нашел эту библиотеку AutoITx4Java - https://code.google.com/p/autoitx4java/

  1. Скачать Jacob, AutoIT (см ссылку выше)
  2. Добавить jacob.jar и autoitx4java.jar на свой путь к библиотеке ,
  3. Место jacob-1.15-M4-x64.dll в вашем пути к библиотеке.

Пример кода

File file = new File("lib", "jacob-1.15-M4-x64.dll"); //path to the jacob dll 
System.setProperty(LibraryLoader.JACOB_DLL_PATH, file.getAbsolutePath()); 

AutoItX x = new AutoItX(); 
String notepad = "Untitled - Notepad"; 
String testString = "this is a test."; 
x.run("notepad.exe"); 
x.winActivate(notepad); 
x.winWaitActive(notepad); 
x.send(testString); 
Assert.assertTrue(x.winExists(notepad, testString)); 
x.winClose(notepad, testString); 
x.winWaitActive("Notepad"); 
x.send("{ALT}n"); 
Assert.assertFalse(x.winExists(notepad, testString)); 
+1

Привет ... Спасибо за ваше время..Но это не может быть сделано с использованием библиотек AutoIt в eclipse? –

+1

Я обновил ответ! – LittlePanda

+1

FYI, альтернативный способ интеграции Selenium с AutoIt с использованием только Selenium API, можно найти здесь: https://github.com/daluu/AutoItDriverServer – David

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