2016-11-29 10 views
-2

連絡先の詳細やアドレスの詳細など、ユーザーから詳細を取得する登録ページがあります。登録ボタンをクリックすると、閉じる、試してみてください。私はこれらのボタンにアクセスしたいです。 私はハンドルを切り替えることを試みましたが、私はただ1つのハンドル、すなわちメインハンドルを得ています。 webdriverをのためのコードは次のようになります。Pythonを使用してセレブのwebridverでブートストラップモーダルに切り替える方法

main_window_handle = driver.current_window_handle 
print main_window_handle 

driver.find_element_by_id("ctl00__mainContent_ucObjRegister_btnRegister").click() 
signin_window_handle = None 
while not signin_window_handle: 
    for handle in driver.window_handles: 
     if handle != main_window_handle: 
      signin_window_handle = handle 
      break 
print main_window_handle 
print signin_window_handle 
driver.find_element_by_id("ctl00__mainContent_ucObjRegister_ucObjAddressVerification_btnCancel").click() 

btnCancelはclicked.And上記のループが無限ループに入りませんモーダル上に存在しています。

+0

signin_window_handle =なし signin_window_handleないが:これらの2行がありますこの行を削除する必要があります:signin_window_handle: –

+0

@PrakharTrivedi:うん、私はsignin_Windw_handleのためにそのことを理解しました。しかし、signin_window_handleはハンドルの値を取得し、ループから抜け出す必要があります。これはハンドルが1つしかありません –

+0

handle!= main_window_handle:条件が満たされない場合、アクセスは内部に進まずに休憩は起こっていません。 –

答えて

0

最後に、ウェブサイトのトン数について多くの調査を行った結果、問題を解決できました。基本的には、モーダルが可視にされたときに新しいウィンドウが作成されないため、ハンドルはモーダルハンドルで更新されませんでした。モーダルのコードは、親ウィンドウの中に存在します。オンモードはあなたの運転手に存在します。 答えができます私の問題 .Hopeを解決見えるようになるために、明示的にモーダルに要素を待ってmodal.So上の要素の可視性の問題です:)

0

break文を再配置しよう:

main_window_handle = driver.current_window_handle 
print main_window_handle 

driver.find_element_by_id("ctl00__mainContent_ucObjRegister_btnRegister").click() 
signin_window_handle = None 
while not signin_window_handle: 
    for handle in driver.window_handles: 
     if handle != main_window_handle: 
      signin_window_handle = handle 
    break 
print main_window_handle 
print signin_window_handle 
driver.find_element_by_id("ctl00__mainContent_ucObjRegister_ucObjAddressVerification_btnCancel").click() 

この方法で、条件が満たされていない場合でも、必要に応じ場合は、ループはループの反復のために、すべての後に解除されますと、すべての条件がなります要件に従ってチェックされます。

関連する問題