модальная обработка всплывающих окон в селене - PullRequest
0 голосов
/ 03 сентября 2018

Я написал приведенный ниже код для обработки всплывающего окна для OTP.

На самом деле это заход на веб-страницу, ввод имени пользователя и пароля и нажатие на кнопку входа в систему, после чего появляется всплывающее окно OTP. он обрабатывает все эти вещи, но не может ввести PIN-код во всплывающем окне (я не уверен, что правильно обрабатываю это всплывающее окно). Там нет никаких рамок в этом.

Источник страницы выглядит как это всплывающее окно. Не могли бы вы помочь мне определить это всплывающее окно OTP и ввести PIN-код. Я пробовал много способов, таких как прямая идентификация элементов через xpath, cssselector и т. Д.

Вот код:

WebDriver driver = new FirefoxDriver();
      driver.get("URL");
        driver.manage().window().maximize();
        driver.findElement(By.id("Email")).sendKeys("user@mail.com");
        driver.findElement(By.id("Password")).sendKeys("pass@123");
        driver.findElement(By.id("btnSignIn")).click();
        driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
        WebElement wb= driver.findElement(By.xpath("/html/body/div[2]/div/div/div/section/form/div/div[2]/div/div/div"));
        wb.sendKeys("1111");

Всплывающее окно:

popup

Источник страницы:

sources

Ответы [ 2 ]

0 голосов
/ 03 сентября 2018

Это простая форма HTML.

У меня нет установленной Java IDE, но простой пример с C #.

        IWebElement element = driver.FindElement(By.Id("OTP"));
        element.Click();
        element.SendKeys("Text");

Не должно быть проблемой сделать аналог Java из этого.

0 голосов
/ 03 сентября 2018

Согласно HTML-коду, это не предупреждение и не в кадре. Вы можете просто использовать идентификатор или любой локатор, а не абсолютный путь, который вы использовали.

Иногда прямые sendkeys не работают. Сначала нужно один раз щелкнуть в поле ввода, а затем ввести текст.

Иногда thread.leep также помогает мне перед вводом текста.

...