Щелчок открывает новую ссылку

#python #selenium-chromedriver

Вопрос:

селен/хромдрайвер

При нажатии кнопки открывается новая вкладка, когда я делаю это через браузер с графическим интерфейсом.

У Python Selenium, похоже, нет проблем с нажатием кнопки, так как это не дает мне ошибок. Ошибки возникают на следующем шаге, когда мне нужно найти элемент на выбранной странице. Я попросил селена сделать снимок экрана, и он по-прежнему показывает первую страницу.

Предположительно, он нажал кнопку, создал новую вкладку и не переключился?

Как мне переключиться на новую вкладку или даже проверить, существует ли новая вкладка в первую очередь?

Спасибо!

Ответ №1:

Когда вы открываете браузер с помощью selenium, он сохраняет дескриптор для каждой вкладки/окна , которым он управляет, в списке, называемом window_handles , например:

 from selenium import webdriver
driver = webdriver.Firefox()

print(driver.window_handles)
 

…должен дать вам что-то вроде ['6b7af9bb-f299-462e-a79a-2b8fda63f388']

Когда вы открываете новую вкладку, в этот список должен быть добавлен новый дескриптор для этого окна/вкладки. Чтобы затем переключиться на нужную вкладку, используйте driver.switch_to.window() , например (продолжение приведенного выше примера):

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

Примечание: вы также можете использовать driver.switch_to_window , но это не рекомендуется в пользу приведенного выше примера.

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