python自動化テストSelenium常用関数
4261 ワード
Seleninumは自動化テストのツールとして、もちろん多くの自動化操作の関数を提供します。http://seleniumhq.github.io/selenium/docs/api/py/api.html
このような元素の位置付けが困難でないようにするために、E lement NortVisible Exceptionを発生する確率を高めます。したがって、Seleniumは2つの待ち方を提供しています。一つは陰的な待ち方で、もう一つは明示的な待ち方です。
表示待ち時間:
明示的に条件を指定してから最長待ち時間を設定します。この時間に元素が見つからなかったら、異常を投げます。
以下はいくつかの内蔵の待つ条件です。直接にこれらの条件を呼び出すことができます。自分でいくつかの待つ条件を書く必要はありません。
暗黙的な待ち方は簡単です。つまり、待ち時間を簡単に設定します。単位は秒です。
7.JS文を実行する
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は第三者のブラウザに依存すると説明しました。——————————————————————————————————————————————————————————————————————————————————————————————————————