A、ハンドルウィンドウの切り替え
あなたが要素をクリックすると、新しいタブを再生成しますが、我々はまだあなたが新しいウィンドウで要素を操作し続けたい場合は、元のウィンドウで動作しているこの時間は、私たちはメソッドハンドルウインドウスイッチを使用する必要があります。
一般的な方法:
window_handles:現在開いているすべてのウィンドウハンドル、リストの戻り値の型を取得します。
current_window_handle:現在のウィンドウのハンドルを取得します。
switch_to.window(handle_path):ウィンドウ切替、handle_pathパラメータウィンドウハンドルを表します。
操作は、新たな要素が出てくるのを待つための要素が必要である場合には、我々が支配的な待機を使用し、ECは、)(道visibility_of_element_locatedに私たちを与えた後、ハンドル内のウィンドウスイッチはまた、待ち時間に関連して、目に見える要素を表し、それは新しいのを待っていますウィンドウが開き、私は次のように使用され、ディスプレイに一般的な方法と新しい方法を使用します。
方法(待機させtime.sleep()を使用):
インポート時
セレンインポートwebdriverをから
selenium.webdriver.support.wait輸入WebDriverWaitから
ECとしてselenium.webdriver.support輸入expected_conditionsから
によってselenium.webdriver.common.byインポートから
ドライバ= webdriver.Chrome()
driver.get( "http://www.baidu.com")
driver.maximize_window()
driver.find_element_by_id( "KW")。send_keys( "パイソン")
( "SU")driver.find_element_by_id。クリックしてください()
LOC =(By.XPATH、 "// [テキスト()= '基本的なチュートリアル|初心者チュートリアル']")
WebDriverWait .until(ドライバ、20)(EC.visibility_of_element_located(LOC))
driver.find_element(* LOC).click()#新しいウィンドウをクリックします
新しいウィンドウに#スイッチ、動作要素に新しいウィンドウ
time.sleep(1)#は1秒を待つことを余儀なく
#1は、現在開いているすべてのウィンドウを取得します。---リストウィンドウ。ハンドル
勝利= driver.window_handles
印刷(WINS)
ウィンドウハンドルの前に#を印刷プレイ
印刷(driver.current_window_handle)
#2、switch文は、ウィンドウの操作エレメントに切り替えたいです。新しいHTMLページに - 新しいウィンドウが勝利[-1]
driver.switch_to.window(WINS [-1])
#3、これで新しいページ、要素、および操作のための外観
LOC =(By.XPATH、 "// ulの[クラス@ = 'PC-NAV'] // A [テキスト()= '首页']")
WebDriverWait .until(ドライバ、20)(EC.visibility_of_element_located(LOC))
driver.find_element(* LOC).click()
二、IFRAMEスイッチ
以下のようにiframeのが主な子のhtml HTMLページに埋め込まれている表します。
次のように我々は新しいHTMLページ要素で操作したい場合には、次の操作を実行するために新しいHTMLページに切り替える必要があるが、一般的に使用される方法は次のとおりです。
switch_to.frame(パス):新しいHTMLページに切り替え、パスのサポートインデックス、名前、WebElementターゲットパラメータの3種類
switch_to.default_content():メインスイッチへのhtmlページ
switch_to.parent_frame():1つのHTMLページ(親ページ)に切り替え
iframeのハンドオーバで待たなければならない、time.sleep()メソッドを使用することに加えて、EC)は、(道frame_to_be_available_and_switch_to_itに私たちを与え、それらに効果的なスイッチングはiframeはiframeを表し、インデックス、名前、WebElementオブジェクトと4つのタプルをサポートしていますパラメータを渡す方法。
三、爆弾を切り替え、アラートフレーム
爆弾アラートを区別するためにどのようにそれをボックス?単純なアプローチは、優先順位付けし、後者の要素を操作する必要性をボックスを配置弾性要素を使用しないことであり、以下のように、一般的な方法は次のとおりです。
switch_to.alert:警告爆弾ブロックに切り替え
受け入れる():OK
却下():キャンセル
send_keys(keysToSend):入力テキスト、keysToSendは、入力テキスト文字列を表し、
テキストは、():ポップアップボックス内のコンテンツを取得します。
ECは、フレームの設定方法の内側に爆弾を警告する、alert_is_present()メソッドは、アラートにアラートを演奏待機ブロックを発生し、スイッチボックスの殻を表し
方法(一般的):
セレンインポートwebdriverをから
ドライバ= webdriver.Chrome()
driver.maximize_window()
driver.get( "のhttp:// XXXX")
#警告ボックスが表示され、その結果、操作を実行します。
driver.find_element_by_id( "idxxx")。クリックしてください()
警告爆弾ブロック#に切り替え
警告= driver.switch_to.alert
#警告のテキストコンテンツを取得
印刷(alert.text)
#爆弾ボックスを閉じます[OK]をクリック
alert.accept()
(サン操作EC.alert_is_present()メソッドを使用して)方法2:
セレンインポートwebdriverをから
selenium.webdriver.support.wait輸入WebDriverWaitから
ECとしてselenium.webdriver.support輸入expected_conditionsから
ドライバ= webdriver.Chrome()
driver.maximize_window()
driver.get( "のhttp:// XXXX")
#警告ボックスが表示され、その結果、操作を実行します。
driver.find_element_by_id( "idxxx")。クリックしてください()
# EC条件 -- 等待alert弹框出现,并切换到alert当中
alert = WebDriverWait(driver, 10).until(EC.alert_is_present())
# 获取alert的文本内容
print(alert.text)
# 点击确定,关闭弹框
alert.accept()