библиотека Selenium2; Невозможно выбрать новое окно по имени или URL [идентификаторы и заголовки совпадают]

Я не могу выбрать новое окно, которое открывается после нажатия кнопки в IE11. Я пробовал с именем окна, идентификатором окна и заголовками, но ни один из них не работает, но он работал сразу.

Select PPM Login Window
Click Element   //*[@id='myNewWindow']  
Sleep    15s
@{windows}=    Get Window Names
@{windId}=    Get Window Identifiers
@{winTitles}=    Get Window Titles
: FOR    ${winHandle}    IN    @{winTitles}
\    Select Window    ${winHandle}
\    Sleep    5s
\    ${status}=    Run Keyword And Return Status    Page Should Contain         Element    name=login_name
\    Exit For Loop If    '${status}'=='True'

Вывод списков:

@{windows} = [ selenium_main_app_window | undefined ]
@{windId} = [ undefined | undefined ]
@{winTitle}= [ABCD | ABCD]

Ошибка: ValueError: невозможно найти окно с дескриптором, именем, заголовком или URL-адресом «selenium_main_app_window»

Может ли кто-нибудь помочь мне решить эту проблему, я застрял в этой проблеме.


person Lokman Liton    schedule 27.03.2017    source источник
comment
Вы уверены, что эти окна открыты? Кажется довольно подозрительным, что идентификаторы окон не определены. Даже если окна существуют, похоже, у вас есть другие проблемы: два окна с одинаковым заголовком. Вы, вероятно, не сможете перебирать их по заголовку, потому что селен всегда выбирает первое найденное окно с таким заголовком.   -  person Bryan Oakley    schedule 27.03.2017
comment
Да, оба окна открыты, и идентификаторы Get Window возвращают одинаковое значение для обоих окон, а также для Get Window Titles. Но почему это не работает с именами окон, @{windows} = [ selenium_main_app_window | неопределенный ]   -  person Lokman Liton    schedule 27.03.2017


Ответы (1)


У меня такая же проблема с электронным приложением (провисание). На ваш вопрос, почему это не работает с именем окна (selenium_main_app_window), потому что это имя неверно, это просто жесткий код в selenium2library, как показано ниже:

def get_window_names(self):
    """Returns and logs names of all windows known to the browser."""
    values = self._window_manager.get_window_names(self._current_browser())

    # for backward compatibility, since Selenium 1 would always
    # return this constant value for the main window
    if len(values) and values[0] == 'undefined':
        values[0] = 'selenium_main_app_window'

    return self._log_list(values)
person Quoc Cao    schedule 13.12.2018