セレンのインストールと使用(RPM)

ディレクトリ

まず、インストール

第二に、使用

1、文のブラウザオブジェクト

2、ページ訪問

3、ノードを見つけます

図4に示すように、チェーンの動作

5、jsのコード実行

6、スイッチングフレーム

7、待っている遅延

8、前方と後方

9、クッキー

10、操作タブ

11、例外処理

まず、インストール
1は、PIP3は、ラベルの新しいバージョンは、もはやphantomjsをサポートされていることセレン#(注)をインストールしていません

図2に示すように、ブラウザは(クロムと例えば)各ドライブをダウンロード

chromedriverをダウンロードする(1)クローム必要

ダウンロードします。http://chromedriver.storage.googleapis.com/index.html

(2)ファイルのディレクトリに環境変数を追加します。

マック和のLinux:sudoのMV chromedriverは/ usr / local / binに/ chromedriver

(3)を確認します。風呂入力chromedriverを

 

第二に、使用
1、文のブラウザオブジェクト
をインポートwebdriverをセレンから
ブラウザ= webdriver.Chrome()
ブラウザ= webdriver.Firefox()
ブラウザ= webdriver.Edge()
ブラウザ= webdriver.Safari()
捨てられたブラウザ= webdriver.PhantomJS()#よる
file_detector_context#検出器、現在のファイルの書き換え
名#ブラウザ名
start_client()#アクセスを開始する前に、
stop_client()#訪問の終了後
start_session()#は、所望の機能を持つ新しいセッションを作成します。
create_web_element()#はelement_id指定されたラベルを作成
、実行を()#コマンド実行
のget()#ロードページ
タイトル#現在のページタイトル
find_elementを。#ノード検索
execute_script()#同期実行のJS
execute_async_script()#非同期実行
current_urlの#現在のURL
page_source#ページのソース
に近い()#近い
終了()#出口にドライバをし、すべてのウィンドウを閉じます。
current_window_handle#現在のウィンドウハンドルは、
全て#ウィンドウハンドルをwindow_handles
maximize_window()#最大ウィンドウ
fullscreen_window()#フルスクリーン
ウィンドウが最小化さminimize_window#
要素スイッチング#= driver.switch_to.active_element switch_to
アラート= driver.switch_to.alertの
driver.switch_to.default_contentを( )
driver.switch_to.frame( 'frame_name')
driver.switch_to.frame(1)
driver.switch_to.frame(driver.find_elements_by_tag_name( "インラインフレーム")[0])
driver.switch_to.parent_frame()
driver.switch_to.window( 'メイン')
戻る()#後方
前方()#前方
リフレッシュ()#リフレッシュ
GET_COOKIES()#GET現在のクッキー
GET_COOKIE(名)#GET名前で、単一のクッキー。場合見つかったリターンクッキー、そうでない場合はなし。
delete_cookie(名前)#クッキーを削除
delete_all_cookiesは()#は、クッキーの空
add_cookieを(diect)#クッキー増加
implicitly_wait(タイム)#暗黙の待機
set_script_timeout(WAIT_TIME)#は、エラーが発生する前に呼び出されるスクリプトの実行\非同期\スクリプトを設定します。
set_page_load_timeout(WAIT_TIME)#はエラーをスローする前に、ページのロードを待つ時間を設定します。
ドライバが必要な機能は、現在使用している#戻り値desired_capabilities
get_screenshot_as_fileを(ファイル名)#は、スクリーンショットのファイルとして保存されます
save_screenshot(ファイル名)現在のウィンドウのスクリーンショットは、PNG画像ファイルに保存されます#
get_screenshot_as_png()#ショット、バイナリ
get_screenshot_as_base64( )#フリー、Base64で
set_window_size(幅、高さ、windowHandle = 'カレント')#セットウィンドウサイズ
get_window_size()#取得ウィンドウサイズ
set_window_position(X、Y)#設定ウィンドウ位置
get_window_position()#取得ウィンドウ位置
get_window_rect()#取得ウィンドウのx、y座標と現在のウィンドウ。
set_window_rect()#設定ウィンドウのx、y座標
file_detector使用するキーボード入力を送信#文書検出器セット。
デバイスの向き#設定電流方向
driver.orientation =「風景」
allowed_values = [「LANDSCAPEザ」、「人物」]
application_cache#キャッシュapplicationcacheブラウザとターゲットアプリケーションと相互作用を返し
利用できるのGET_LOG(log_tpye)#ログタイプのリスト
2、ページの訪問は、
ブラウザのクロームが制御されている自動ソフトウェアの質問で始まります:

セレンのインポートからwebdriverを

オプション= webdriver.ChromeOptions()#加载启动配置
option.add_argument( '無効-infobars')

ブラウザ= webdriver.Chrome(chrome_options =オプション)
browser.get( 'https://www.taobao.com' )
セレンインポートwebdriverをから

ブラウザ= webdriver.Chrome()
browser.get( 'https://www.taobao.com')
ページ= browser.page_source#<クラス'STR'>
9月、印刷(ページ、タイプ(ページ) = '\ n')
browser.close()
3、查找节点
(1)单个节点

セレンインポートwebdriverをするから

ブラウザ= webdriver.Chrome()
browser.get( 'https://www.taobao.com')
INPUT_1 = browser.find_element_by_id( 'Q')
INPUT_2 = browser.find_element_by_css_selector( '#のQ')
INPUT_3 = browser.find_element_by_xpath( '// * [@ ID = "Q"]')
プリント(INPUT_1、INPUT_2、INPUT_3、9月= '\ n'は)
browser.close()
三种方法殊途同归:

<selenium.webdriver.remote.webelement.WebElement "要素= "0.652580522307187から1")>
<selenium.webdriver.remote.webelement.WebElement"、要素= "0.652580522307187から1")>
<selenium.webdriver.remote.webelement .WebElement」、要素= "0.652580522307187から1")>

すべてのメソッド

browser.find_element_by_id()
browser.find_element_by_name()
browser.find_element_by_xpath()
browser.find_element_by_css_selector()
browser.find_element_by_class_name()
browser.find_element_by_link_text()
browser.find_element_by_tag_name()
browser.find_element_by_partial_link_text()
通用方法:find_element()

セレンインポートwebdriverをより
によってselenium.webdriver.common.byインポートから

ブラウザ= webdriver.Chrome()
browser.get( 'https://www.taobao.com')
INPUT_1 = browser.find_element(By.ID、 'Q' )
プリント(INPUT_1)
browser.close()
<selenium.webdriver.remote.webelement.WebElement(セッション= "XXX"、要素= "0.13972884174276556から1")>

(2)マルチノード

この方法は、複数のより、得られた結果はWebElementのリストであり、単一のノードに類似しています。

find_elements()

セレン輸入webdriverをからの
ことでselenium.webdriver.common.byインポートから

ブラウザ= webdriver.Chrome()
browser.get( 'https://www.taobao.com')
INPUT_1 = browser.find_elements(By.CSS_SELECTOR '。サービス-bd李')
プリント(INPUT_1)
browser.close()
其他方法

browser.find_elements_by_id()
browser.find_elements_by_name()
browser.find_elements_by_xpath()
browser.find_elements_by_css_selector()
browser.find_elements_by_class_name()
browser.find_elements_by_link_text()
browser.find_elements_by_tag_name()
browser.find_elements_by_partial_link_text()
 

(3)ノードインタラクション

一般的な方法:send_keys():クリアテキストを、(入力):空のテキスト、クリック():クリック

セレンインポートwebdriverをから
インポート時間

ブラウザ= webdriver.Chrome()
browser.get( 'https://www.baidu.com')
の入力= browser.find_element_by_id( 'KW')
inputs.send_keys( 'iPhone')
time.sleep (1)
inputs.clear()
inputs.send_keys( 'アプリ')
ボタン= browser.find_element_by_id( 'SU')
button.click()
4、动作链
セレンインポートwebdriverをから
selenium.webdriverインポートActionChainsから

ブラウザ= webdriver.Chrome ()
URL = 'http://www.runoob.com/try/try.php?filename=jqueryui-api-droppable'
browser.get(URL)
browser.switch_to.frame( 'iframeResult')
ソース= browser.find_element_by_css_selector ( '#draggable')
ターゲット= browser.find_element_by_css_selector( '#ドロップ可能')
アクション= ActionChains(ブラウザ)#声明对象
actions.drag_and_drop(ソース、ターゲット)
actions.perform()#执行
 

5、执行JS代码
セレンインポートwebdriverをするから

ブラウザ= webdriver.Chrome()
browser.get( 'https://www.zhihu.com/explore')
browser.execute_script( 'window.scrollToは(0、document.body.scrollHeight ) ')
browser.execute_script('警告( "にBtottom") ')
 

WebElement下オブジェクトのmainメソッド

TAG_NAME番号ラベル名の
テキスト#ラベルテキストの
クリック()#このタブはクリックしてください
(提出)#フォーム提出
をクリア()#を、それがテキスト入力要素、クリアテキストであれば
GET_PROPERTY(名前)#は、プロパティ与えられたラベルを取得します
GET_ATTRIBUTE(名)#同上。差異が見出さ
選択された要素かどうかを()#戻るis_selectedありません。チェックボックスやラジオボタンかどうかをチェックするために使用することができます。
要素が有効かどうかis_enabled()#戻り
send_keysを()#アナログ入力要素。
is_displayed()#が見える
location_once_scrolled_into_view位の
サイズ#サイズ素子
の#css属性値value_of_css_property(名)
要素の位置は、位置#キャンバスレンダリングすることができる
素子の大きさと位置とRECT#辞書。
screenshot_as_base64#は、現在の要素のbase64でエンコードされた文字列としてスクリーンショットを撮ります。
= element.screenshot_as_base64 img_b64
screenshot_as_png#取得バイナリデータとして現在の要素のスクリーンショット
スクリーンショットスクリーンショットを保存(ファイル名)#は、ブール値を返す
親#親
オブジェクトが一致するか否かを検出するために使用される内部番号#


フレーム切り替え、6
ページのサブページに相当IFRAMEノード。親ページのためのセレンデフォルトのアクション。switch_to.frameでサブページを入力します()

browser.get(URL)

brower.swich_to.frame( 'iframeResult')

図7は、待っている遅延
暗黙の待ち時間:implicitly_waitのための外観を行くには一定の時間を待つことになるノードを見つけられませんでした()

セレンwebdriverをインポートから

ブラウザ= webdriver.Chrome()
browser.implicitly_wait(10)
browser.get( 'https://www.zhihu.com/explore')
インプット= browser.find_element_by_class_name( 'のAdd-ZU-トップ質問' )
印刷(入力)
を示し待ち:あなたはノードを見つけるために返すように指定した時間内にアップロードした場合、最大待機時間を指定します。まだ出て、その後、タイムアウト例外がスローされていない指定された時間をロードします。

webdriverをセレンをインポート
インポートすることによりselenium.webdriver.common.byから
selenium.webdriver.support.uiインポートWebDriverWaitから
selenium.webdriver.supportからインポートexpected_conditions AS EC

ブラウザ= webdriver.Chrome()
browser.get(「HTTPS:// www.taobao.com ')
待機= WebDriverWait(ブラウザ、10)の例#オブジェクト
入力= wait.until(EC.presence_of_element_located((By.ID、' Q「)))
ボタン= wait.until(EC.element_to_be_clickable( (By.CSS_SELECTOR、 'BTN-検索')))
印刷(入力、ボタン、オン9月= '\ N-'
title_is#コンテンツのタイトルである
title_contains#ヘッダは、コンテンツ含ま
presence_of_element_located#着信タプルが配置ロードアウト点在
url_containsを
url_matches
url_to_be
url_changes
visibility_of_element_located#ノードは、着信可視位置決めタプル
#ノード着信可視オブジェクトvisibility_ofは
外#ローディングすべてのノードをpresence_of_all_elements_located
visibility_of_any_elements_located
visibility_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#ノードを目に見えない
invisibility_of_element
element_to_be_clickable#ノードをクリックすることができ
、ノードがまだDOMであるかどうかをstaleness_of#裁判官を、リフレッシュ決定するために使用することができ
、着信ノードオブジェクトを選択しelement_to_be_selected#ノードを
#ノードをelement_located_to_be_selectedを選択することができ、入ってくるタプル見つけ
element_selection_state_to_be#ノードオブジェクトを渡されました状態、等しいtrueを返し、そうでない場合はfalse
element_located_selection_state_to_be#タプル着信位置決めステータス、等しいtrueを返し、そうでない場合はfalse
number_of_windows_to_be
new_window_is_opened
alert_is_present#警告が表示され

、前方と後方、8を
前方ブラウザとバック関数--back()/フォワード()

セレンインポートwebdriverを
インポート時間

ブラウザ= webdriver.Chrome()
browser.get( 'https://www.baidu.com')
browser.get( 'https://www.taobao.com')
browser.get(」 HTTPS:.. www.zhihu.com ')
browser.back()
time.sleep(1)
browser.forward()
9、クッキー
セレンインポートwebdriverをするから

ブラウザ= webdriver.Chrome()
browser.get(' https://でwww.zhihu.com/explore ')
プリント(browser.get_cookies())
browser.add_cookie({'名称':'名前」、 'ドメイン': 'www.zhihu.com'、 '値': 'sdfwer'} )
#cookie至少需要名前和値两个キー。
印刷(browser.get_cookies())
browser.delete_all_cookies()
印刷(ブラウザ。GET_COOKIES())
10、操作タブ
セレンのインポートからwebdriverを
インポート時間

のブラウザ= webdriver.Chrome()
browser.get( 'https://www.baidu.com')
browser.execute_script( ')(window.open')#タブで新しいページを開く
ブラウザ。 switch_to.window(browser.window_handles [1])#ハンドオーバ
browser.get( 'https://www.taobao.com')
browser.switch_to.window(browser.window_handles [0])
#browser.close()#閉じますこのページ
time.sleep(1)
browser.quit()#が近いすべてのページと終了する
11を、例外処理
セレンインポートwebdriverをから
selenium.common.exceptionsからインポートTimeoutException、NoSuchElementExceptionを

ブラウザ= webdriver.Chrome()
してみてください。
browser.get( 'HTTPS:www.baidu.com')
TimeoutException除い:
印刷( 'タイムアウト')
試してみてください。
browser.find_element_by_class_name( 'LSD')
はNoSuchElementExceptionを除い:
プリント( 'いいえ、そのようなelemnt')
最後に:
browser.close()

----------------
免責事項:この記事はCSDNブロガー元の記事「Marvin_Wind」で、CC 4.0 BY-SAの著作権契約書に従ってください、複製、元のソースのリンクと、この文を添付してください。 。
オリジナルリンクします。https://blog.csdn.net/Marvin_Wind/article/details/86004937

おすすめ

転載: www.cnblogs.com/logol/p/12048018.html