Я хочу использовать селен с Python для открытия нескольких вкладок в одном браузере и скремблирования ставок в реальном времени одновременно с несколькими вкладками.selenium window_handles не корректно при открытии нового окна с Python
Домашняя страница веб-сайта генерирует список игр. Однако нет способа получить ссылку на игру, если вы не найдете элемент игры и не используете click() (сайт ajax heavy), которые открывают игру на той же вкладке. Мое решение открыть несколько вкладок - получить список игр, а затем вручную открыть новую вкладку с первой загруженной домашней страницей, а затем щелкнуть по игре с другим индексом в списке. Тем не менее, я считаю, что массив driver.window_handles
всегда включает только один элемент, который является текущей вкладкой, а не всеми вкладками, которые я открыл вручную в браузере.
Может кто-нибудь сказать мне, что пошло не так, или если вы можете дать лучшее решение этой проблемы?
Проблема упрощается как код в следующем:
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
# create a new Firefox session
driver_temp = webdriver.Firefox()
driver_temp.implicitly_wait(30)
driver_temp.get("https://www.google.com")
body = driver_temp.find_element_by_tag_name('body')
# manually open second tab
body.send_keys(Keys.CONTROL + 't')
driver_temp.get("https://www.google.com")
body = driver_temp.find_element_by_tag_name('body')
# manually open third tab
body.send_keys(Keys.CONTROL + 't')
driver_temp.get("https://www.google.com")
body = driver_temp.find_element_by_tag_name('body')
#print the number of window_handles
print len(driver_temp.window_handles)
Я открыл 3 вкладки, однако LEN (driver_temp.window_handles) всегда равен 1
Это не совсем справедливо. То, что «вкладка» и «новое окно» в контексте одного и того же экземпляра браузера, по-видимому, одинаково по виду браузера. У большинства браузеров есть отдельный процесс для каждой вкладки/окна (Chrome, FF). Вот почему Selenium DOES предоставляет API для управления вкладками, но это не вкладки REAL, это просто отдельные дескрипторы окон (https://code.google.com/p/selenium/wiki/JsonWireProtocol#GET_/session/:sessionId/ window_handle) – stanjer
@ Stanjer да, я несколько раз редактировал фразу, пытаясь найти лучшее описание ситуации .. спасибо. – alecxe