Как переориентировать Selenium Webdriver C# на окно после использования процесса AutoIT?
Я использовал 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();
}
}
}
}
Я попытался использовать строку parentWindow = driverGC.CurrentWindowHandle.ToString(), чтобы получить дескриптор, а затем (после процесса) driverGC.SwitchTo (). Window(parentWindow); вернуться к окну.
РЕДАКТИРОВАТЬ: я использую версию Chrome 78.0.3904.108.
Заранее спасибо.
1 ответ
Чтобы вернуть фокус Selenium Webdriver обратно в окно после использования процесса AutoIT, вы можете использовать следующую команду:
((IJavaScriptExecutor)driver).ExecuteScript("window.focus();");