Можно ли использовать webdriver / Selenium, чтобы получить текущую вкладку, которую пользователь фактически просматривает - PullRequest
0 голосов
/ 19 октября 2019

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

Я пытался использовать это

driver.current_window_handle

Это показывает имя окна, но это не совсем та вкладка, которую фактически использует пользователь. Это всегда первая вкладка, если я не driver.swith_to_window Кроме того, я пытался использовать

handles = driver.window_handles

, а затем делать это для каждого дескриптора в дескрипторах

driver.swith_to_window(handle)

Но это будет прерывать работу пользователятак как браузер будет переключать вкладки одна за другой.

Возможно ли получить дескриптор окна, заголовок или индекс текущей вкладки, которую пользователь фактически просматривает с помощью веб-драйвера или селена?

Сценарий:

  1. открытый браузер python
  2. пользователь открывает вкладку 1, tab2, tab3 и получает доступ к веб-сайту
  3. пользователь просматривает tab2
  4. селен получать данные из tab2
  5. пользовательские представления tab1
  6. селен получают данные из tab1
  7. пользовательские представления tab3
  8. селен получают данные из tab3 ... и т. Д.

В настоящее время я могу получить данные только из tab1. Если пользователь просматривает tab2, то селен ничего не делает, если я не switch_to_window. Но я не знаю, какую вкладку просматривает пользователь.

Ответы [ 3 ]

0 голосов
/ 19 октября 2019

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

Это будет намного быстрее, чем зацикливание

driver.switch_to_window (handle)

0 голосов
/ 21 октября 2019

Да, это возможно.

Для переключения окон используйте .switch_to.window вместо .swith_to_window, например:

driver.switch_to.window(driver.window_handles[1])
print(driver.current_window_handle)

[1]> пожалуйста, замените на нужный индекс.

Чтобы получить заголовок, используйте:

print(driver.title)

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

print(driver.window_handles.index(driver.current_window_handle))

Или используйте цикл for each, как в примере ниже (относится к вашему сценарию):

driver.get('https://google.com')
driver.execute_script('window.open("https://yahoo.com");')
driver.execute_script('window.open("https://gmail.com");')

for handle in driver.window_handles:
    driver.switch_to.window(handle)
    print(driver.window_handles.index(handle))
    print(handle)
    print(driver.title)
0 голосов
/ 19 октября 2019

вместо переключения по одной вкладке, просто дайте нужный номер вкладки напрямую.

driver.switch_to_window(1)

// 1 - идентификатор вкладки

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