この記事では、Python と Selenium のブラウザ ウィンドウの処理に関するコード例を紹介します。これには特定の参考値があります。必要な友人は参照できます。役立つことを願っています。役に立ちます。
前回、ブラウザのポップアップボックスの処理について触れましたが、何らかの理由でブラウザのウィンドウも起動され、ブラウザが新しいウィンドウを開きます。新しいウィンドウを見つけることは、ポップアップ ボックスを見つけることと似ており、操作する前にウィンドウに切り替える必要があります。
名前 | 使用法 |
---|---|
ウィンドウを切り替える | |
現在のウィンドウ ハンドル | |
すべてのウィンドウ ハンドル | |
現在のウィンドウを閉じる | |
ブラウザを閉じる |
# coding = utf-8 from selenium import webdriver from time import sleep driver = webdriver.Chrome() driver.implicitly_wait(10) driver.get('https://www.baidu.com') first_window_handle = driver.current_window_handle #获取当前(百度首页)的窗口句柄 print('now handle is : ',first_window_handle) #打印百度首页窗口句柄 driver.find_element_by_id('jgwab').click() #点击打开新窗口 second_window_handle = driver.current_window_handle #再获取一次窗口句柄并打印 print('and now handle is : ', second_window_handle) all_handles = driver.window_handles #获取所有窗口句柄 sleep(2) for window in all_handles: if window != first_window_handle: print('and and now handle is : ', window) driver.switch_to.window(window) #切换到非百度首页的窗口 driver.close() #关闭该窗口 sleep(2) try: driver.find_element_by_id('kw').send_keys('test') #关闭窗口后操作百度首页元素 driver.find_element_by_id('su').click() except Exception as msg: print('error: ', msg) #如果有错误,打印错误信息 finally: driver.switch_to.window(first_window_handle) #切换到百度首页后再操作 driver.find_element_by_id('kw').send_keys('try again') driver.find_element_by_id('su').click() sleep(2) driver.quit()
now handle is : CDwindow-6CF04CE58FCA5EA42EC453509FFDF773 and now handle is : CDwindow-6CF04CE58FCA5EA42EC453509FFDF773 and and now handle is : CDwindow-C6EDDF33CAA9BC9330585B2DCB8A664B error: Message: no such window: target window already closed from unknown error: web view not found (Session info: chrome=69.0.3497.92) (Driver info: chromedriver=...先ほどのテストを振り返ると、 1. 新しいウィンドウを開いたとしても、取得されたウィンドウ ハンドルはそのままです。 Baidu ホームページのハンドル (同じハンドルが 2 回印刷されています)。 2. 新しいウィンドウを閉じると、ブラウザにはデフォルトで Baidu ホームページが表示されますが、Baidu ホームページを操作することはできず、代わりに「ウィンドウが存在せず、ターゲット ウィンドウが閉じられました」というエラーが報告されます。ホームページの要素を操作するには、プログラム内で Baidu ホームページに戻る必要があります (「テスト」は取得されませんでしたが、「再テスト」は取得されました)。
以上がブラウザウィンドウを処理するための Python と Selenium のコード例の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。