#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, чтобы вы могли следить за тем, что делает браузер в режиме реального времени.