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

1

В соответствии с 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 имеет то же значение, но я вижу две вкладки, открытые в браузере. Я что-то делаю неправильно? Если да, как мне получить дескриптор новой вкладки?

Использование:

  • selenium 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']
Теги:
selenium
selenium-webdriver
firefox

2 ответа

1
Лучший ответ

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

1

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

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

это позволит вам работать с Tab 1 и

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

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню