私はセレンのライブラリを使用するためにはPythonを使用していますが、また、Java、Pythonのが、動作するように簡単ではありませんを使用することができます。一例として動作するためのpythonを以下ウィル、セレンは私の学習プロセスを収集整理します。
A:インストール
まずPythonは最初のセレンをインストールします。
ピップインストールセレン
第2のステップは、対応する、私はクロム(推奨)を使用し、対応するドライブのブラウザをダウンロードし、ドライバのダウンロードアドレス:http://chromedriver.storage.googleapis.com/index.html
Chromeバージョンに対応したバージョンを運転し、それがChromeの最新バージョンを直接使用することをお勧めします、そして、それにも存在し、最新のドライバをダウンロードしてください。パスの下に、次にchromedriver.exe環境変数にファイルをダウンロードし、正しくコールのpythonに確認してください。
2:基本的な使い方
インポート:
セレンインポート webdriverを
ドライバオブジェクトを取得する1
ドライバ= webdriver.Chrome()
あなたがしたい場合はパラメータを設定し、コンストラクタにパラメータとしてオプションとオブジェクトを作成します。
= chromeOptions webdriver.ChromeOptions() chromeOptions.add_argument(' 無効-infobars ')#は、ブラウザがモニタープロンプト開かれたディスプレイキャンセル chromeOptions.add_argument(「--user-エージェント=のMozilla / 5.0(Windows NTの6.1; WOW64; RV :34.0)のGecko / Firefoxの20100101 / 34.0 ')#のアドオンエージェントユーザー chromeOptions.add_argument(" --proxy-サーバー= HTTP://127.0.0.1 ")#プロキシを追加chromeOptionsの(.add_argumentを' --headless )#バックグラウンドモードで実行されているブラウザ ドライバー= webdriver.Chrome(オプション= chromeOptions)
2.基本操作
driver.maximize_window() #のブラウザ最大化(デフォルトは小さなウィンドウです)
driver.minimize_window() #ブラウザ最小限
driver.set_page_load_timeout(20) #を設定した場合はタイムアウトを、時間をかけて自動的に停止します
driver.get(" http://www.baidu.com ")#のアクセスサイト
driver.refresh() #は、ウェブサイトにリフレッシュ
JSを= " window.open(" https://www.baidu.com"); " #jsファイルを実行することで、オープンA新しいウィンドウ
driver.execute_script(JS)
driver.switch_to.window(driver.window_handles [ 1]) #ブラウザウィンドウを切り替える第がある場合、window_handlesは、現在のウィンドウ、第二の窓に代表スイッチを設定しますウィンドウが文句を言うでしょう
driver.getTitle() #は現在のウィンドウのタイトル名を取得します
driver.current_window_handle#GET現在のウィンドウオブジェクト
driver.current_url#現在のURL
driver.page_source現在のページのための#ソースコード
driver.close() #近い現在のウィンドウ
driver.quit() #近いブラウザ全体
III。検索要素
基本検索します
driver.get(" https://www.baidu.com " )
キロワット = find_element_by_id(" KW ")#のBaiduの検索ボックスに対応するIDによる検索html要素、
SU = driver.find_element_by_id(" SU ")#の検索ボタンをクリック
キロワット.send_keysは(「検索」)#の要素が自動的に入力ボックスの内容移入にこの方法を使用することができます
su.click()#1 自体に、この方法でクリックを使用することができる要素を
#他の検索方法の
find_element_by_name() #のname属性で検索html要素を
)(find_element_by_class_name #に存在するクラス属性値を通じてhtml要素を検索
)(find_element_by_tag_name #をこうした入ってくる「P」などのラベル要素のための使用はお勧めしません、「入力」、見ることで検索
#を多くの他の方法は、すべての戻りの上に、単一の要素があるが、要素プラスのリターンは、より多くの資格の要素だった
)(find_elements_by_name
高度な検索
XPath検索:
XPathはパス要素によって要素の外観を完了するために、要素のXML文書の位置を決定するために使用することができるXMLパス言語、です。XPathはポジショニングの非常に強力な方法ですので、HTMLは、XMLの実装です。
絶対パス1.1 XPathロケーション:
絶対パスを検索する要素の階層関係を使用して、HTMLタグ名は、同じラベルの複数の添え字の数字は、開始から下全般<html>タグを見つけるために選択することができます。以下のような:
find_element_by_xpath(" / HTML /本体/ DIV [1] /フォーム/スパン[1] /入力")
ポジショニングを使用して1.2のXpath要素の属性値
find_element_by_xpath(" //入力[ID @ = 'キロワット'] " )
find_element_by_xpath(" // * [名@ = 'WD'] ")
1.3ハイブリッド測位
find_element_by_xpath(" //フォーム[ID @ = '形態'] /スパン/入力")
二つ。CSSセレクタ
driver.find_element_by_css_selector(" .btn ")
driver.find_element_by_css_selector(" #su ")
プロパティにより、または組み合わせて:
driver.find_element_by_css_selector(" 入力[NAME = 'KW'] ").send_keys(" パイソン" )
driver.find_element_by_css_selector(" span.bg.btn_default>入力#SU ").click()
IV。マウスとキーボード
セレンは提供ActionChainsのキーボードが押されたというようにされて持ち上げ、マウス、マウスの動き、クリック、ドラッグなどのキーボードイベントを処理するクラスを。あなたは次のことをインポートする必要があります
selenium.webdriver.common.action_chains ActionChainsをインポート
メソッドのActionChainsリスト:
click(on_element=None) ——单击鼠标左键 click_and_hold(on_element=None) ——点击鼠标左键,不松开 context_click(on_element=None) ——点击鼠标右键 double_click(on_element=None) ——双击鼠标左键 drag_and_drop(source, target) ——拖拽到某个元素然后松开 drag_and_drop_by_offset(source, xoffset, yoffset) ——拖拽到某个坐标然后松开 key_down(value, element=None) ——按下某个键盘上的键 key_up(value, element=None) ——松开某个键 move_by_offset(xoffset, yoffset) ——鼠标从当前位置移动到某个坐标 move_to_element(to_element) ——鼠标移动到某个元素 move_to_element_with_offset(to_element, xoffset, yoffset) ——移动到距某个元素(左上角坐标)多少距离的位置 perform() ——执行链中的所有动作 release(on_element=None) ——在某个元素位置松开鼠标左键 send_keys(*keys_to_send) ——发送某个键到当前焦点的元素 send_keys_to_element(element, *keys_to_send) ——发送某个键到指定元素
- 链式写法:
su = find_element_by_id("su")
ActionChains(driver).move_to_element(su).click(su).perform()
- 分步写法
su = find_element_by_id("su")
actions = ActionChains(driver)
actions.move_to_element(su)
actions.click(su)
actions.perform()
控制键盘示例:
ActionChains(driver).key_down(Keys.CONTROL, enter).key_up(Keys.CONTROL).perform() #按下Ctrl键然后松开
执行JS:
driver.execute_script("window.scrollTo(0,100)")
driver.execute_script("document.getElementById(\"kw\").value=\"selenium\"")
五. 其他
禁用图片加载:
from selenium import webdriver
options = webdriver.ChromeOptions()
prefs = {
'profile.default_content_setting_values': {
'images': 2,
'javascript': 2,
}
} #2是禁用, 1是允许
options.add_experimental_option('prefs', prefs)
driver = webdriver.Chrome(chrome_options=options)
隐藏window.navigator.webdriver
特征参数 (有时候能反爬)
from selenium.webdriver import Chrome
from selenium.webdriver import ChromeOptions
option = ChromeOptions()
option.add_experimental_option('excludeSwitches', ['enable-automation'])
driver = Chrome(options=option)