Как переориентировать 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();");
Другие вопросы по тегам