使用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. 

我相信这不能仅由Selenium完成。 通过浏览互联网,我了解到可以使用AutoIt完成此操作。

我该怎么做?

Selenium可用于自动化Web浏览器的部件,而AutoIT应用于自动化Windows应用程序(在您的情况下,它可能会登录到远程计算机)。

此链接提供了有关如何与Selenium一起使用AutoIT的详细信息: http : //www.toolsqa.com/selenium-webdriver/autoit-selenium-webdriver/

这是你要做的:

下载/安装AutoIT
您将能够使用AutoIT SciTe Editor创建.au3脚本编译.au3脚本将为您提供.exe文件然后您可以使用Selenium脚本调用.exe文件

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

您可以使用AutoIT窗口信息(x86)或(x64)获取窗口的属性。 示例,窗口的标题/状态栏。

AutoIT还具有Au3记录器,以便您可以记录与远程桌面相关的操作。

下面是一个自动化Http身份validation的示例脚本:

 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) 

我希望这个信息帮助!

更新 :进一步搜索,找到此库AutoITx4Java – https://code.google.com/p/autoitx4java/

  1. 下载雅各布,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)); 
    Interesting Posts