c# - 使用 AutoIT 进程后,如何将 Selenium Webdriver C# 重新聚焦到窗口?
问题描述
我使用 AutoIt 处理 Selenium Webdriver 无法向其发送密钥的身份验证弹出窗口。现在,在 AutoIT 流程之后,我可以成功登录网站,但流程之后的代码似乎都不起作用。我认为窗口可能不再是 Selenium Webdriver 的重点。
有没有办法在身份验证弹出窗口发生之前获取窗口的句柄/名称,然后在该过程之后使用它来重新关注窗口?
以下是我当前的代码:
using System;
using System.Diagnostics;
using System.Threading;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;
using System.Linq;
using OpenQA.Selenium.IE;
using OpenQA.Selenium.Support.UI;
namespace Selenium
{
[TestClass]
public class UnitTest1
{
static IWebDriver driverGC;
public object ExpectedConditions { get; private set; }
[AssemblyInitialize]
public static void SetUp(TestContext context)
{
driverGC = new ChromeDriver(@"C:\Browser Drivers\Chrome");
}
[TestMethod]
public void TestGC()
{
string UserNameGC = "username@website";
try
{
driverGC.Navigate().GoToUrl("https://WEBSITE.com/");
**string parentWindow = driverGC.CurrentWindowHandle.ToString();**
driverGC.FindElement(By.Id("i0116")).SendKeys(UserNameGC);
driverGC.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);
driverGC.FindElement(By.Id("idSIButton9")).Click();
Thread.Sleep(3000);
Process.Start(@"C:\AutoIT.exe");
Thread.Sleep(6000);
driverGC.SwitchTo().Window(parentWindow);
driverGC.FindElement(By.Id("search-reviewee")).SendKeys("John Smith");
Thread.Sleep(3000);
driverGC.FindElement(By.Id("searchbtn")).Click();
}
catch (Exception ex)
{
}
finally
{
driverGC.Dispose();
driverGC.Quit();
}
}
}
}
我尝试使用string parentWindow = driverGC.CurrentWindowHandle.ToString()来获取句柄,然后(在处理之后)driverGC.SwitchTo().Window(parentWindow); 返回窗口。
编辑:我使用的是 Chrome 版本 78.0.3904.108。
提前致谢。
解决方案
要在使用 AutoIT 进程后将Selenium Webdriver焦点返回到窗口,您可以使用以下命令:
((IJavaScriptExecutor)driver).ExecuteScript("window.focus();");
推荐阅读
- spring - Spring-Boot BeanCreatingException
- ruby-on-rails - 解析 API 源,但 JSON 源未更新(缓存?)
- eclipse - Eclipse JUnit 视图未显示
- ios - 无法创建通用函数以一次注册多个单元格
- laravel - Laravel 5.4“加入”查询
- python - python - 如何在python pandas的两个级别上进行分组计数值?
- vb.net - 什么变量类型可以保存 LinQ 结果?
- android - 如何尽早在 build.gradle 中获取 buildtype
- python - 在 Python 3 中将字符串编码为 Windows-1252 URL 格式
- jasper-reports - JasperReports:报告参数作为消息包查找的参数