дескрипторы окна не обновляются в Python Selenium - PullRequest
0 голосов
/ 18 июня 2019

Я моделирую взаимодействие пользователя с Selenium, где у меня есть, например, 3 щелчка по навигационной схеме.

В каждом окне я отображаю его window_handle, и я понял, что current_window_handle всегда возвращает один и тот же идентификатор, а window_handles всегда имеет один и тот же размер, вместо того, чтобы иметь список объектов окна.

Поэтому я не могу переключиться с window_3 на window_1, потому что current_window_handle всегда одно и то же ...

Вот пример для демонстрации проблемы (код, который нажимает на ссылки, был подавлен, чтобы сфокусировать вопрос на коде, с которым у меня возникли проблемы):

# click on a link, wait and get window handle
window_1 = browser.current_window_handle
print(window_1)
print(browser.window_handles)
print(browser.session_id)
browser.implicitly_wait(3)


# click on a link, wait and get window handle
window_2 = browser.current_window_handle
print(window_2)
print(browser.window_handles)
print(browser.session_id)
browser.implicitly_wait(3)

# click on a link, wait and get window handle
window_3 = browser.current_window_handle
print(window_3)
print(browser.window_handles)
print(browser.session_id)

И результат:

CDwindow-18D629A1BFC3391C5AE352F02768EFA3
['CDwindow-18D629A1BFC3391C5AE352F02768EFA3']
c50563aa58c1565d8c82ead6653e65a4

CDwindow-18D629A1BFC3391C5AE352F02768EFA3
['CDwindow-18D629A1BFC3391C5AE352F02768EFA3']
c50563aa58c1565d8c82ead6653e65a4

CDwindow-18D629A1BFC3391C5AE352F02768EFA3
['CDwindow-18D629A1BFC3391C5AE352F02768EFA3']
c50563aa58c1565d8c82ead6653e65a4

Согласно документу Selenium API:

- current_window_handle

Использование: driver.current_window_handle

- дескрипторы окон

Возвращает дескрипторы всех окон в текущем сеансе.

Использование: driver.window_handles

Как видите, идентификатор сессии всегда один и тот же.

Что может быть неправильным в этой ситуации?

1 Ответ

0 голосов
/ 18 июня 2019

Если посмотреть на вывод print(browser.window_handles), он всегда был одинаковым только с одним элементом списка.

['CDwindow-18D629A1BFC3391C5AE352F02768EFA3']

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

Всякий раз, когда вы видите, что новое окно / вкладка открыта, вы всегда можете переключиться на новое окно перед выполнением операции с новым окном.

Переключение на последнее окно:

driver.switch_to.window(driver.window_handles[-1])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...