ウィンドウのスクリーンショット
実行されるプログラムによって自動化の場合は、そう時々印刷エラーメッセージは非常に明確ではありません。あなたは現在のウィンドウのスクリプト実行エラーのスクリーンショットを保存することができた場合、絵を通じて、エラーの原因を確認することは非常に直感的にすることができます。webdriverをテーマ関数get_screenshot_as_file()、save_screenshot()、get_screenshot_as_png、get_screenshot_as_base64 4つの方法を提供することは、現在のウィンドウを傍受します。
get_screenshot_as_file()
非常に単純な方法は、ドライバにこの方法を取得することにより、パスが最初のストレージ管理のスクリーンショットの画像を容易にするために、ピクチャフォルダのディレクトリを作成し、のようなスクリーンショットの書き込みを保存します。コードは以下の通りであります:
selenium.webdriverのインポートクローム から時間インポート睡眠 #访问百度 ドライバ=クローム(" C:\プログラムファイル(x86の)\ Googleの\クローム\アプリケーション\ chromedriver.exe " ) driver.get(「https://www.baidu .COM / " ) driver.find_element_by_id(" KW ").send_keys(" セレン" ) 睡眠( 2 )
#保存图片至文件夹中 driver.get_screenshot_as_file(" D:\\ PythonProject \\テスト\\ピクチャー\\百度.JPG 」) driver.quit()
我々は上記のプログラムを実行すると、私たちは「.PNG」形式保存された画像の保存をお勧めしますが、画像を保存するための通常のプロセスに影響を与えることはありません教えて、警告の警告を発見しました。図に示すように。
警告警告提示如下:UserWarning:保存されたスクリーンショットのために使用される名前は、ファイルの種類と一致していません。これは、 `.png`拡張子で終わる必要があります
)、「それは` .png`拡張子で終わる必要があります。タイプ」UserWarning
画像を保存するために.png形式の最適化ルック。すべての成功を救うために二度!
save_screenshot()
同様の上記get_screenshot_as_file()を使用してsave_screenshot()メソッド。私たちは、直接インスタンスを見て。コードは以下の通りであります:
selenium.webdriverのインポートクローム から時間インポート睡眠 #访问百度 ドライバ=クローム(" C:\プログラムファイル(x86の)\ Googleの\クローム\アプリケーション\ chromedriver.exe " ) driver.get(「https://www.baidu .COM / " ) driver.find_element_by_id(" KW ").send_keys(" セレン" ) 睡眠( 2 ) #save_screenshot保存图片 driver.save_screenshot(" D:\\ PythonProject \\テスト\\ピクチャー\\ baidu2.png " ) driver.quit()
get_screenshot_as_png和get_screenshot_as_base64
通常、一般的に使用されていない2つは、あなたが一般的に見つけることができます。get_screenshot_as_pngバイナリデータストリームを得ることで、get_screenshot_as_base64 base64エンコーディングは、元のデータを得るために再要約仕上げの場合には実際に実際の作業です。
ブラウザを閉じます
webdriverを2が終了しています()とclose()メソッド、(終了)現在のウィンドウを閉じるために使用されている近くの出口関連のドライバおよびすべてのウィンドウを閉じ、()です。ユースケースの実行中に、マルチウィンドウの実施形態の処理
複数のウィンドウは、我々は、我々が閉じclose()メソッドを使用する必要があり、それらのウィンドウを閉じたい、開かれています。
違いは何ですか)(、私たちの栗を見てみましょう近い()して終了します。コードは以下の通りであります:
from selenium.webdriver import Chrome
from time import sleep
# 访问百度
driver = Chrome("C:\Program Files (x86)\Google\Chrome\Application\chromedriver.exe")
driver.get("https://www.jd.com/")
# 查看当前window handle
indexwindow = driver.current_window_handle
print(indexwindow)
print('\n')
driver.find_element_by_link_text("家用电器").click()
sleep(2)
#循环遍历找到第一个window,再打开一个“手机”页面
for handle in driver.window_handles:
if handle == indexwindow:
driver.find_element_by_link_text("手机").click()
sleep(2)
# 查看所有window handles
print(driver.window_handles)
print('\n')
# 关闭当前窗口
driver.close()
# 查看现在的所有window handles,可看到只是关闭了最开始的一个window,其他两个window还在
print(driver.window_handles)
print('\n')
# 关闭所有窗口,退出相关的驱动程序
driver.quit()
上述代码运行结果可看出close()只关闭了最开始打开的一个window,后面打开的两个仍在。如下图所示:
大家可以动手试试。亲自实践一下记忆更加深刻哦~~~