rocky_1234 Ответов: 1

Как управлять окном внутри веб-страницы с помощью selenium C#?


Привет Я использую код selenium c# для управления веб-страницей. Мне удалось открыть веб-страницу в firefox, войти на веб-страницу и открыть дочернее окно на этой веб-странице.
Но я не могу контролировать дочернее окно внутри этой веб-страницы.

Я пытался использовать
PopupWindowFinder
код:
finder = new PopupWindowFinder(driver,timeout,sleepInterval);

            try {
                popUpWindow = finder.Click(driver.FindElement(By.XPath("//li[@class='quicklink icHumanResources']")));
            }
            catch (WebDriverException)
            {
                System.Threading.Thread.Sleep(10);
            }
            driver.SwitchTo().Window(popUpWindow);

Но это не работает.

Что я уже пробовал:

driver = new FirefoxDriver();
            driver.Navigate().GoToUrl("https://WEB-ADDRESS/");

        

            IWebElement userName = driver.FindElement(By.XPath("//input[@class='LoginIputField focus']"));
            IWebElement password = driver.FindElement(By.Id("Engine_LoginScreen_txtPassword"));
            IWebElement loginButton = driver.FindElement(By.Id("Engine_LoginScreen_btnSubmit"));
            userName.SendKeys("XXXXXXXXXXXX");
            password.SendKeys("XXXXXXXXXXXXXXXXXXXXX");
            loginButton.Click();
           
           
             System.Threading.Thread.Sleep(20000);

            
            ITakesScreenshot ssdriver = driver as ITakesScreenshot;
            Screenshot screenshot = ssdriver.GetScreenshot();
            string timestamp = DateTime.Now.ToString("yyyy-MM-dd-hhmmss");
            screenshot.SaveAsFile("D:\\SLIKA" + @"\Exception-"+timestamp+".png", System.Drawing.Imaging.ImageFormat.Png);


            string currentHandle = driver.CurrentWindowHandle;

            System.Threading.Thread.Sleep(20000);

            TimeSpan timeout = new TimeSpan(0, 1, 0);
            TimeSpan sleepInterval = new TimeSpan(0, 1, 0);

            finder = new PopupWindowFinder(driver,timeout,sleepInterval);

            try {
                popUpWindow = finder.Click(driver.FindElement(By.XPath("//li[@class='quicklink icHumanResources']")));
            }
            catch (WebDriverException)
            {
                System.Threading.Thread.Sleep(10);
            }
           driver.SwitchTo().Window(popUpWindow);

Andira Muttakim

Вы пробовали водителя?SwitchTo ().Фрейм (ваш фрейм)?
А какую версию Selenium и Firefox вы используете?

1 Ответов

Рейтинг:
0

Sean Rand

Привет,

Это звучит так, как будто вместо того, чтобы использовать окно, в этом случае может понадобиться рамка switchto. Если окно находится внутри веб-страницы, то обычно это iframes или alerts. По моему опыту, этим обычно занимается SwitchTo ().Метод API кадре, мне нормально поставить iframe на название, чтобы перейти. Я надеюсь, что это будет решено и поможет вам. Дайте мне знать, если нет, и мы сможем работать над этим, я уверен, так как ежедневно имею дело с несколькими окнами / iframes / всплывающими окнами на моей платформе QA, и с ними интересно работать,

driver.SwitchTo().Frame(<This has 3 overrides>);


Овации
Шон