Управление вкладками firefox в селене

Согласно документации window_handles :

window_handles

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

Но я не вижу новый дескриптор, появляющийся в списке window_handles после открытия новой вкладки:

 >>> from selenium import webdriver >>> from selenium.webdriver.common.keys import Keys >>> >>> driver = webdriver.Firefox() >>> driver.get("http://stackoverflow.com/") >>> driver.window_handles [u'{caca92e1-521e-9b4d-9374-00af0ae7d384}'] >>> >>> # open a new tab >>> driver.find_element_by_tag_name("body").send_keys(Keys.COMMAND + 't') >>> driver.window_handles [u'{caca92e1-521e-9b4d-9374-00af0ae7d384}'] 

Как вы можете видеть, window_handles имеет window_handles и то же значение, но я вижу две вкладки, открытые в браузере. Я что-то делаю неправильно? Если да, как мне получить дескриптор новой вкладки?

С помощью:

  • селен 2.44.0 (последний)
  • firefox 35.0 (последний)
  • python 2.7.6

Обратите внимание: если я сделаю аналогичную вещь в Chrome, window_handles отобразит 2 дескриптора:

 >>> driver = webdriver.Chrome() >>> driver.get("http://stackoverflow.com/") >>> driver.execute_script('window.open("about:blank", "_blank");') >>> driver.window_handles [u'CDwindow-9458E5DB-D5ED-496C-BEE7-2FA468F3DF42', u'CDwindow-04C0FBBC-C418-465B-B6AF-F72B288B45C6'] 

2 Solutions collect form web for “Управление вкладками firefox в селене”

Только окно браузера верхнего уровня имеет HWND. У вкладок нет собственных HWND. Для получения более подробных сведений обратитесь сюда .

Selenium имеет ручку для Windows, а не для вкладок. вы также можете работать с вкладками с некоторым кодом, подобным этому

 ArrayList<String> tabs2 = new ArrayList<String> (driver.getWindowHandles()); driver.switchTo().window(tabs2.get(0)); 

это позволит вам работать на вкладке 1 и

 driver.switchTo().window(tabs2.get(1)); 

позволит вам работать на второй вкладке. Таким образом, вы можете обрабатывать вкладку в браузере.

  • Элемент поиска selenium webdriver в следующей ссылке
  • Как прокручивать веб-страницу с помощью selenium webdriver в python?
  • Запуск селена за прокси-сервером
  • Использование расширений с селеном (Python)
  • Получить HTML-источник WebElement в Selenium WebDriver с помощью Python
  • Скребнение селена с несколькими URL-адресами
  • как я могу удалить уведомления и предупреждения из браузера? selenium python 2.7.7
  • Использование селена в фоновом режиме
  • Веб-страница уже открыта (в исходном формате); просто нужно прочитать этот текст, используя Selenium
  • Ошибка «Недопустимые значения локатора, переданные в», если мы используем find_element вместо find_element_by
  • Выбрать -> абстракция опции
  • Python - лучший язык программирования в мире.