我想自动执行需要通过Remote Desktop Connection的某些任务。
我将分享我迄今为止所写的代码。
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进行此操作。
我该怎么做?
答案 0 :(得分:3)
Selenium可以用于自动化Web浏览器的部件,而AutoIT应该用于自动化Windows应用程序(在您的情况下,它可能会登录到远程计算机)。
此链接提供了有关如何与Selenium一起使用AutoIT的详细信息:http://www.toolsqa.com/selenium-webdriver/autoit-selenium-webdriver/
以下是您需要做的事情:
下载/安装AutoIT
您将能够使用 AutoIT SciTe编辑器创建.au3脚本
编译.au3脚本将为您提供.exe文件
然后,您可以使用
Runtime.getRuntime().exec("D:\AutoIt\AutoItTest.exe");
您可以使用自动窗口信息(x86)或(x64)获取窗口的属性。示例,窗口的标题/状态栏。
AutoIT还具有 Au3记录器,以便您可以记录与远程桌面相关的操作。
以下是自动执行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)
我希望这些信息有所帮助!
<强>更新强>: 进一步搜索,找到此库AutoITx4Java - https://code.google.com/p/autoitx4java/
示例代码
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));