Переключиться на любое новое окно - PullRequest
0 голосов
/ 19 сентября 2019

Я пишу код с использованием селена.

При конкретном щелчке есть вероятность появления одного из двух окон.и для появления обоих окон требуется около 20-50 секунд.поэтому я хочу переключиться на то, какое окно появится.

У меня нет способа предсказать, какое окно появится. Текущий процесс - я ищу главное окно в течение нескольких секунд и, если оно не найдено, я пытаюсьнайдите маленькое всплывающее окно с кнопкой ОК на нем.Если найден, нажмите на него.если снова не найден, попробуйте найти главное окно, это занимает время.Если у меня есть способ переключиться на последнее окно и, проверив его заголовок, какое это окно и выполнить соответствующее действие.

Отредактировано - главное окно не является исходным окном.Всего 3 окна на картинке.Одно окно, где я должен нажать.Теперь после нажатия может появиться главное окно или маленькое всплывающее окно может появиться с кнопкой ОК.

Ответы [ 4 ]

0 голосов
/ 20 сентября 2019

Привет, вы можете использовать Javascript для переключения wondow: ниже приведен код:

((JavascriptExecutor)LoginDriver).executeScript("window.open('about:blank', '-blank')");
    // To switch to the new tab
  ArrayList<String> tabs = new ArrayList<String>(LoginDriver.getWindowHandles());
  LoginDriver.switchTo().window(tabs.get(1));
0 голосов
/ 19 сентября 2019

Вы можете попробовать что-то подобное для вашей проблемы

// Store the current window handle
String mainWin = driver.getWindowHandle();

// Perform the click operation that opens new window

//Wait till driver.getWindowHandles() returns 2 windows

// Switch to new window opened
for(String winHandle : driver.getWindowHandles()){
    driver.switchTo().window(winHandle);
}
//Get current window to take decision on the next actions
String currentWin= driver.getWindowHandle();

// Perform the actions on new window

// Close the new window
driver.close();

// Switch back to original first window
driver.switchTo().window(mainWin);
0 голосов
/ 19 сентября 2019

Чтобы обработать размер окна, вы можете использовать .getWindowHandles(), и попытаться использовать while loop, чтобы дождаться появления новых окон, а затем вы можете повторить все текущие окна.

int sizeBefore = driver.getWindowHandles().size();
elemnt.click();//to bring up new windows

//until current windows size>before, please keep adding timeout
while(driver.getWindowHandles().size()==sizeBefore) {
    //wait in milliseconds
    Thread.sleep(500);
}

//handle current size windows
ArrayList<String> hnds = new ArrayList<String> (driver.getWindowHandles());

//iteration windows
for(String hnd: hnds) {
    driver.switchTo().window(hnd);
    System.out.println(driver.getTitle());
}

Чтобы переключиться на определенныйокна, используйте:

driver.switchTo().window(hnds.get(index));
0 голосов
/ 19 сентября 2019

Вы должны сохранить дескриптор окна для главного окна, прежде чем будет выполнено какое-либо действие.

String mainWindow = driver.getWindowHandle();

Теперь нажмите и сделайте следующее:

Вы можете опрашивать в течение 30 секунд макс. Время синтервал, скажем, 5 секунд, прервите опрос, как только вы получите более одного дескриптора окна.

Set<String> windows = driver.getWindowHandles();

дайте мне знать, на каком языке вы работаете.

Я могу помочь вам с кодом.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...