2017-01-17 2 views
1

나는 Sinenium과 Firefox에 대해 Ubuntu14.04에서 작업 중이다. send_keys (Keys.CONTROL + 't')에 의해 새 탭을 만들었지 만 첫 번째 탭에서 명령을 계속주었습니다. 새 탭에 올바르게 초점을 맞추지 않았기 때문일 수 있습니다.Sinenium and Firefox on Ubuntu : 새로운 탭에 집중

from selenium import webdriver 
from selenium.webdriver.common.by import By 
from selenium.webdriver.support.ui import WebDriverWait 
from selenium.webdriver.support import expected_conditions as EC 
from selenium.webdriver.common.keys import Keys 

driver = webdriver.Firefox() 
main_window = driver.current_window_handle 

driver.get("https://www.google.com") 
driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + 't') 

driver.switch_to_window(main_window) 
driver.get("http://www.bing.com") 

driver.find_element_by_tag_name('body').send_keys(Keys.CONTROL + 't') 

driver.switch_to_window(main_window) 
driver.get("https://github.com/login") 

이 코드를 실행하는 동안 오류가 없습니다.

google.com으로 이동 한 후 새 탭을 만들고 화면이 새 탭의 빈 페이지로 변경됩니다. 그 후 필자는 새로운 탭에 초점을 맞추기 위해 driver.switch_to_window (main_window)를 작성하여 다음 줄의 코드가 새 탭에서 생성되도록했습니다. 그러나 driver.get ("http://www.bing.com")이 실행되면 화면은 google.com이있는 첫 번째 탭으로 돌아가 google.com을 bing.com으로 변경합니다. 다음 코드에서도 마찬가지입니다. 다른 새로운 탭이 생성되었지만 첫 번째 탭으로 돌아갑니다. driver.get ("https://github.com/login")이 실행되고 bing.com이 github.com/login이됩니다.

은 내가

하여 현재 보이는 탭에 초점을 맞추고 생각

main_window = driver.current_window_handle;

그러나 이것은 잘 작동하지 않았습니다. 3 개의 다른 탭에 3 개의 웹 페이지를 모두로드하려면 어떻게해야합니까?

사양 :

  • 셀레늄 3.0.2
  • 파이어 폭스 45.0.1
  • 우분투 14.04 AMD의 64 비트
  • 파이썬 2.7.6

답변

0

솔루션을 다음 시도하고 저를주세요 실제로 찾고있는 것이 아닌지 확인하십시오.

개 창을 연 후 63,210
driver.get("https://www.google.com") 
google_window = driver.current_window_handle # Define main window 

driver.execute_script("window.open('http://www.bing.com')") # Open Bing window 
bing_window = [window for window in driver.window_handles if window != google_window][0] # Define Bing window 

driver.execute_script("window.open('https://github.com/login')") # Open GitHub window 
github_window = [window for window in driver.window_handles if window not in [google_window, bing_window]][0] # Define GitHub window 

당신은 간단하게 탐색 할 수 있습니다 :

driver.switch_to_window(bing_window) 
...# do something 
driver.switch_to_window(google_window) 
...# do something 
driver.switch_to_window(github_window) 
+0

이것은 내가 무엇을 찾고되지 않습니다. 탭을 만들고 새 탭에 초점을 맞추고 싶었습니다. 귀하의 대답은 Firefox의 새로운 창을 만들고 그 사이를 전환하는 것에 관한 것입니다. –

+0

''새로운 탭에 초점을 맞추라 '는게 무슨 뜻이야? 그리고 뭘 위해서? "새 탭"으로 전환한다는 것은 "집중"한다는 의미입니다 ... 맞습니까? – Andersson

+0

정확하지 않습니다. Selenium에서 새 탭으로 전환해도 새 탭에 집중하면 아무 것도 할 수 없습니다. 스위칭과 포커싱은 내가 아는 한 다릅니다. https://gist.github.com/lrhache/7686903에서 코드를 참조하십시오. # 현재 윈도우에 포커스를 두는 것이 있습니다. 사실 현재 보이는 탭에 초점을 맞 춥니 다. -> browser.switch_to_window (main_window) –