2017-01-17 12 views
1

私はUbuntu14.04でSeleniumとFirefoxに取り組んでいます。私はsend_keys(Keys.CONTROL + 't')で新しいタブを作成しましたが、最初のタブでコマンドを与え続けました。UbuntuのSeleniumとFirefox:新しいタブに焦点を合わせる

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つのWebページを読み込むことができますか?

仕様:

  • セレン3.0.2
  • のFirefox 45.0.1
  • Ubuntuの14.04 AMDの64ビット
  • のpython 2.7.6

答えて

0

次の解決方法を試してみて、私を聞かせてください。あなたが実際に探しているものでないかどうかをご確認ください:

すべての3つのウィンドウを開いた後、
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) –

関連する問題