Selenium - 执行 AutoIT 脚本 - Jenkins
Selenium - Executing AutoIT Scripts - Jenkins
此问题源于 C# 平台上的 Selenium、Jenkins 和 NUnit。
我有一个调用 windows 身份验证框进行登录的应用程序。我最终使用 Autoit 登录,并且在本地一切正常。但是,当从 Jenkins 执行此操作时,一切都会失败。我对 autoit 脚本做了一些更改,我当前的失败是 "Modal dialog present"。 (我使用 WinWait 与 WinWaitActive)
我的猜测是 exe 在从 Jenkins 启动时没有 运行。权限问题?
Jenkins 运行正在 Windows 2012 R2 作为大师
C#代码:
System.Diagnostics.Process.Start(Path.Combine(base.BasePath, @"folder\autoitfile.exe"));
有人知道是什么原因造成的吗?
谢谢!
操作外部应用程序 windows 时,始终使用 #RequireAdmin 以获得权限提升。也可以使用 Opt("WinSearchChildren", 1) 来搜索 child windows。和 "WinTitleMatchMode"
一起玩
#RequireAdmin ;Will give your script a permission elevation (sometimes its needed)
Opt("WinTitleMatchMode", 2) ;1=start, 2=subStr, 3=exact, 4=advanced, -1 to -4=Nocase
Opt("WinSearchChildren", 1) ;0=no, 1=search children also
我遇到了同样的问题。事实证明,在我的例子中 window 没有出现,脚本一直在等待。我将超时参数添加到 WinWaitActive 方法调用中,现在我的脚本不再挂起。此外,我还必须让活动线程休眠一段时间以确保用户已登录。
public void Login(string username, string password, int waitForit)
{
AutoItX.WinWaitActive(title: "Windows Security", timeout: 15);
AutoItX.Send(username);
AutoItX.Send("{TAB}");
AutoItX.Send(password);
AutoItX.Send("{ENTER}");
Thread.Sleep(waitForit);
}
希望这有助于解决您的问题。
此问题源于 C# 平台上的 Selenium、Jenkins 和 NUnit。
我有一个调用 windows 身份验证框进行登录的应用程序。我最终使用 Autoit 登录,并且在本地一切正常。但是,当从 Jenkins 执行此操作时,一切都会失败。我对 autoit 脚本做了一些更改,我当前的失败是 "Modal dialog present"。 (我使用 WinWait 与 WinWaitActive)
我的猜测是 exe 在从 Jenkins 启动时没有 运行。权限问题?
Jenkins 运行正在 Windows 2012 R2 作为大师
C#代码: System.Diagnostics.Process.Start(Path.Combine(base.BasePath, @"folder\autoitfile.exe"));
有人知道是什么原因造成的吗?
谢谢!
操作外部应用程序 windows 时,始终使用 #RequireAdmin 以获得权限提升。也可以使用 Opt("WinSearchChildren", 1) 来搜索 child windows。和 "WinTitleMatchMode"
一起玩#RequireAdmin ;Will give your script a permission elevation (sometimes its needed)
Opt("WinTitleMatchMode", 2) ;1=start, 2=subStr, 3=exact, 4=advanced, -1 to -4=Nocase
Opt("WinSearchChildren", 1) ;0=no, 1=search children also
我遇到了同样的问题。事实证明,在我的例子中 window 没有出现,脚本一直在等待。我将超时参数添加到 WinWaitActive 方法调用中,现在我的脚本不再挂起。此外,我还必须让活动线程休眠一段时间以确保用户已登录。
public void Login(string username, string password, int waitForit)
{
AutoItX.WinWaitActive(title: "Windows Security", timeout: 15);
AutoItX.Send(username);
AutoItX.Send("{TAB}");
AutoItX.Send(password);
AutoItX.Send("{ENTER}");
Thread.Sleep(waitForit);
}
希望这有助于解决您的问题。