こんにちは、皆さん、お久しぶりです。次に、コケティッシュなセレン操作をいくつか紹介します。準備はできていますか? ドアは溶接で閉められ、車は走り去った。ははは
1. 2ページを開いて切り替え操作を行う
いくつかのページテストを行う場合、現在のページに基づいて新しいページを開いて同時にいくつかの操作を実行し、その後別のページに切り替えて操作を続行する必要があります。 2 つのドライバー オブジェクトではなく、現在のドライバー オブジェクトで動作する場合のみ、ナンセンスな話はやめましょう。コードは次のとおりです。
1 from Selenium import webdriver 2 import time 3 4 def open_windows1(): 5 driver.get( ' www.baidu.com ' ) 6 time.sleep(9 ) 7 8 def open_windows2(): #Second new ウィンドウは使用します新しいウィンドウを開くための JS メソッド。新しいタブのポップアップ ウィンドウをシミュレートします。9 new_page= window.open( ' www.jd.com ' ) 10 driver.execute_script(new_page) 11 time.sleep(2 ) 12 13 def switch_windows(): 14 ハンドル = driver.window_handles 15 print ( '現在開いているウィンドウを表示: ' + str(handles)) 16 while 1 : 17 driver.switch_to.window(handles[0]) 18 time.sleep(5 ) 19 driver.switch_to.window(handles[1 ]) 20 time.sleep(5 ) 21 if __name__ == " __main__ " : 22 chromeOptions = webdriver.ChromeOptions() 23 chromeOptions.add_experimental_option( ' useAutomationExtension ' , False) 24 driver = webdriver.Chrome(chrome_options=chromeOptions,desired_capabilities= chromeOptions.to_capabilities()) 25 driver.maximize_window() 26 open_widows1() 27 open_wondows2() 28 switch_windows()
友達はこのコードを直接コピーして実行して、効果を確認できます。もちろん、他のメソッドを使用してこのドライバー オブジェクトを取得することもできます。少し恥ずかしくないですか?
2. 目に見えない要素を操作する
ページ上で属性「display=none」を設定している要素がありますが、このとき通常のxpathを使用すると確実に取得できません。このとき、このページに対してJS操作を行う必要があります。 JS を介してこの要素の可視性を変更する、つまり JS を介してこの要素の属性を変更し、値を取得する操作を行います。
<! DOCTYPE html > < html lang ="ja" > < head > < meta charset ="UTF-8" > < title >タイトル</ title > </ head > < body > < select name ="new_select" id =""スタイル="表示:なし" > <オプション値="bmw" > BMW </オプション> >アウディ</オプション> <オプション値="mini" >ミニ</オプション> <オプション値="benz" >ベンツ</オプション> </選択> </本体> </ html >
通常、選択オプションボックスの値を取得したいのですが、取得できません。
1 seleniumからwebdriver をインポート2 selenium.webdriver.support.selectからインポート選択 3 os をインポート4インポート時間 5 chromeOptions = webdriver.ChromeOptions() 6 chromeOptions.add_experimental_option( ' useAutomationExtension ' , False) 7 driver = webdriver.Chrome(chrome_options= chromeOptions、desired_capabilities= chromeOptions.to_capabilities()) 8 driver.maximize_window() 9 file_path = ' file:/// ' + os.path.abspath( ' test_display.html ' ) 10 driver.get(file_path) 11 change_display = ' document.querySelectorAll("select")[0].style.display="block"; ' 12 #このステートメントだけ選択オプションボックスのプロパティを変更すると、正常に動作するようになります。 13 driver.execute_script(change_display) 14 sel = driver.find_element_by_tag_name( ' select ' ) 15 Select(sel).select_by_value( ' mini ' ) 16 time .sleep( 2 ) 17 driver.quit()
3. ポップアップ ウィンドウ要素が見つからない
Seleniumのテストでは単純なポップアップウィンドウのように見えますが、アラートや通常の位置決めでは見つからないので、再度確認したところ、iframe要素(以下iframe要素と呼びます)ではないので、sleepを使用してみました。現時点での解決策の 1 つは、現在のページのすべてのウィンドウを印刷することです。つまり、このページにウィンドウがいくつあるかを確認することです。
1 #つまり、window_handles メソッドを呼び出して、現在のウィンドウの合計数を表示します。 2 all_handles = driver.window_handles 3 print (all_handles) 4 #この時点の結果は、このリストには 2 つの要素があり、現在のページには2 つのウィンドウなので、今は 1 つのウィンドウに見えますが、実際には 2 つのウィンドウがあります。表示されている要素は別のウィンドウにあります。別のウィンドウに切り替えて処理し、処理後に元のウィンドウに戻すだけです。 5 #メソッドの切り替え 6 driver.switch_to.window(all_handles[1 ]) 7 #元のウィンドウに戻る 8 driver.switch_to.window(all_handles[0])
アラートや他の方法で見つからない場合は、この方法を使用して試すことができます。
4. iframe 要素に切り替えます
いくつかのページを明確に確認でき、現在の要素を取得し、現在の要素の ID を取得できますが、それが生きているのか死んでいるのかを見つけることはできません。現時点では、見つける必要がある要素は iframe に含まれている可能性があります。操作するには iframe 要素を入力する必要があるということです。
#たとえば、現在の iframe 要素 ID は 'frame' driver.switch_to.frame(driver.find_element_by_id( ' iframe ' ) #その後、通常の操作を実行できます。 #現在の iframe を終了しますdriver.switch_to.default_content() # したがって、 iframe 要素を終了して通常の操作を実行できます。
ショーのさらなる運営については検討中ですので、ご期待ください。。。。