2017-01-05 1 views
1

複数の相互接続されたウィンドウ上に構築されたアプリケーションを追跡する方法を探しています。Selenium python(webdrivers):複数の相互接続されたウィンドウを持つケースを処理する方法

基本的に私は幸せに走っているwebdriverを持っていて、ウィンドウを開くアプリケーションを起動します。私はその要素にアクセスすることができ、すべてが問題ありません。

しかし、アプリケーションの別の部分が開いており、メインビューが閉じます。それはまだ同じアプリケーションですが、メインウィンドウが破棄され、新しいウィンドウが作成されます。

これは、悲しいことに、webdriverがコンテキストをもう見つけられないという問題を引き起こします(正当な理由で、それが接続されていたアプリが破棄されたためです)。

コンテンツシェルが空思い付いた、ドライバはChromedriver 2.23.40は、SeleniumのPythonのwebdriverを持つ、このようなケースを処理する方法はあります

OSX

にありますか?

+0

'driver.switch_to.window(<ウィンドウハンドル>)を使ってみましたか?そうでなければ、 'driver.window_handles'を使ってウィンドウハンドルのリストを取得できます。通常、インデックス0のウィンドウがデフォルトのウィンドウハンドルであり、新しいウィンドウハンドルが順番に追加されます。 –

+0

あなたはそうです。私は、すべてのウィンドウを取得し、別のウィンドウに切り替える方法があることを認識していませんでした。これは私の問題を解決します、ありがとう!私はそれを解決策として設定することができます –

答えて

0

セレンはアクティブウィンドウの切り替えを制御する方法を持っています。

# Get window handles 
windows = driver.window_handles 
print("Number of window handles: {0}".format(len(windows)) 
print("Current window handle: {0}".format(driver.current_window_handle) 

# Switch that most recently opened one 
driver.switch_to.window(windows[-1]) 
print("New window handle: {0}".format(driver.current_window_handle) 
関連する問題