python自動化テストSelenium常用関数

4261 ワード

Seleninumは自動化テストのツールとして、もちろん多くの自動化操作の関数を提供します。http://seleniumhq.github.io/selenium/docs/api/py/api.html
1)     
find_element_by_class_name:  class  
find_element_by_css_selector:  css  
find_element_by_id:  id  
find_element_by_link_text:          
find_element_by_name:       
find_element_by_partial_link_text:          ,            
find_element_by_tag_name:  tag  
find_element_by_xpath:  Xpath    
PS: element  elements            ,    List
  :find_elements_by_class_name
2)マウス動作
              ,  :  ,  ,  ,  ,   
    ActionChains :selenium.webdriver.common.action_chains.ActionChains
  ActionChains(driver).XXX         

click(element):      ;
click_and_hold(element):           ;
context_click(element):        ;
double_click(element):      ;
drag_and_drop(source,target):              ;
drag_and_drop_by_offset(source, xoffset, yoffset):         
key_down:     ,   (Control, Alt and Shift),  Ctrl+C
ActionChains(driver).key_down(Keys.CONTROL).send_keys(‘c’).key_up(Keys.CONTROL).perform();
key_up:     ;
move_by_offset(xoffset, yoffset):       ;
move_to_element(element):            ;
move_to_element_with_offset(element, xoffset, yoffset):           ;
pause(second):          ;
perform():    ,        ,  perform()    ;
release():      
reset_actions:    
send_keys(keys_to_send):    ,       .send_keys(Keys.CONTROL,’a’)
       ,     .send_keys(Keys.CONTROL,’x’)  ,    :
  .send_keys(keys.RETURN);           :     .send_keys(‘xxx’);
send_keys_to_element(element, *keys_to_send): send_keys  ;
3)パチンコ
   :selenium.webdriver.common.alert.Alert,        …

          ,      ,             :
alert = driver.switch_to_alert(),          :

accept():  
dismiss():     
send_keys():   
text():       
4)ページ前進、後退、切替
    : driver.switch_to.window(“   ”)
    window_handles   
for handle in driver.window_handles:
      driver.switch_to_window(handle)
driver.forward() #  
driver.back() #   
5)ページのスクリーンショット
driver.save_screenshot(“  .png”)
6)ページは現在のウェブページがますます多くなって、Ajax技術を採用しました。このようにプログラムはいつ、ある要素が完全にロードされたかを確定できません。実際のページの待ち時間が長すぎると、あるdom要素がまだ出てきていませんが、あなたのコードは直接このWebElementを使っています。
このような元素の位置付けが困難でないようにするために、E lement NortVisible Exceptionを発生する確率を高めます。したがって、Seleniumは2つの待ち方を提供しています。一つは陰的な待ち方で、もう一つは明示的な待ち方です。
表示待ち時間:
明示的に条件を指定してから最長待ち時間を設定します。この時間に元素が見つからなかったら、異常を投げます。
from selenium import webdriver
from selenium.webdriver.common.by import By
# WebDriverWait  ,      
from selenium.webdriver.support.ui import WebDriverWait
# expected_conditions  ,      
from selenium.webdriver.support import expected_conditions as EC

driver = webdriver.PhantomJS()
driver.get("http://www.xxxxx.com/loading")
try:
    #   10        id="myDynamicElement",       
    element = WebDriverWait(driver, 10).until(
        EC.presence_of_element_located((By.ID, "myDynamicElement"))
    )
finally:
    driver.quit()
パラメータを書かないと、プログラムはデフォルトでは0.5 sで一度呼び出して要素がすでに生成されているかどうかを確認します。元の要素が存在すると、すぐに戻ります。
以下はいくつかの内蔵の待つ条件です。直接にこれらの条件を呼び出すことができます。自分でいくつかの待つ条件を書く必要はありません。
title_is
title_contains
presence_of_element_located
visibility_of_element_located
visibility_of
presence_of_all_elements_located
text_to_be_present_in_element
text_to_be_present_in_element_value
frame_to_be_available_and_switch_to_it
invisibility_of_element_located
element_to_be_clickable – it is Displayed and Enabled.
staleness_of
element_to_be_selected
element_located_to_be_selected
element_selection_state_to_be
element_located_selection_state_to_be
alert_is_present
暗黙の待ち時間:
暗黙的な待ち方は簡単です。つまり、待ち時間を簡単に設定します。単位は秒です。
from selenium import webdriver

driver = webdriver.PhantomJS()
driver.implicitly_wait(10) # seconds
driver.get("http://www.xxxxx.com/loading")
myDynamicElement = driver.find_element_by_id("myDynamicElement")
もちろん設定しない場合、デフォルトの待ち時間は0です。
7.JS文を実行する
driver.execute_script(js  )
##       :
js = document.body.scrollTop=10000
driver.execute_script(js)
結節では、Selenium自動化テストフレームを使ってJavaScriptの動的生成データをつかむために、Seleniumは第三者のブラウザに依存すると説明しました。——————————————————————————————————————————————————————————————————————————————————————————————————————