2016-09-01 8 views
1

Я использую Python. Я пытаюсь открыть две вкладки на хроме, каждый на другой веб-сайт. Это мой код:Python - открытие нескольких вкладок с использованием селена

from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 
import time 


browser=webdriver.Chrome() 
browser.get('http:/reddit.com') 
browser.find_element_by_tag_name('body').send_keys(Keys.CONTROL + 't') 
time.sleep(3) 
browser.get('http://bing.com') 

Когда я запускаю его, закладка первого открыта для reddit.com, а затем еще одна закладка открывается по умолчанию моей веб-странице, а затем bing.com открывается на вкладке оригинальной. Я хочу, чтобы первая вкладка перешла на reddit, а вторая вкладка - на bing, но «browser.get (« сайт ») действует только на первой вкладке.

ответ

4

попробовать, как это для питона:

browser=webdriver.Chrome() 
browser.get('http:/reddit.com') 
window_before = driver.window_handles[0] 
browser.find_element_by_tag_name('body').send_keys(Keys.CONTROL + 't') 
window_after = driver.window_handles[1] 
driver.switch_to_window(window_after) 
time.sleep(3) 
browser.get('http://bing.com') 
+0

Спасибо. Он работает сейчас! –

+0

Удивительный, рад, что я мог бы помочь! пожалуйста, примите, если вы считаете, что это лучший ответ :) – Jason

+0

Порядок, в котором возвращаются ручки, произволен. Таким образом, вы не должны использовать второй индекс для возврата второго окна. https://www.w3.org/TR/webdriver/#dfn-get-window-handles –

0

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

ArrayList<String> tabs = new ArrayList<String> (driver.getWindowHandles()); 
driver.switchTo().window(tabs.get(0));//first tab 
driver.switchTo().window(tabs.get(1));//second tab 
+0

Спасибо. Я немного изменил его для python, и он работает. –

4

Для взаимодействия с окном, необходимо установить контекст для этого окна с driver.switch_to.window. Также было бы легче открыть новую вкладку с инъекцией сценария:

browser=webdriver.Chrome() 

#first tab 
browser.get('http:/reddit.com') 

#second tab 
browser.execute_script("window.open('about:blank', 'tab2');") 
browser.switch_to.window("tab2") 
browser.get('http://bing.com') 
+0

Я не знаком со вставкой скрипта. Что означает execute_script ("window.open ('about: blank', 'tab2');")? –

+0

Он выполнит строку JavaScript, предоставленную в качестве аргумента. В этом случае он откроет новую вкладку с именем 'tab2'. Для получения дополнительной информации: https://developer.mozilla.org/en-US/docs/Web/API/Window/open –

Смежные вопросы