Python 3+selenium+driver操作テスト
9402 ワード
前言
Seleniumの暴力で何かを操作するので、メモを書きます.
Selenium
Seleniumは、Webアプリケーションのテストに使用されるツールです.Seleniumテストは、本物のユーザーが操作しているようにブラウザで直接実行されます.サポートされているブラウザには、IE(7、8、9、10、11)、Mozilla Firefox、Safari、Google Chrome、Operaなどがあります.
Seleniumは、テストの録画(selenium IDE)、作成および実行(Selenium Remote Control)、およびテストの並列処理(Selenium Grid)を含む完全なWebアプリケーションテストシステムです.
SeleniumのコアSelenium CoreはJsUnitに基づいており、JavaScriptによって完全に記述されているため、JavaScriptをサポートするブラウザで使用できます.Seleniumは実際のブラウザをシミュレートし、テストツールを自動化し、多くのブラウザをサポートし、爬虫類の中で主にJavaScriptレンダリングの問題を解決するために使用されます.
PhantomJS
PhantomJSはwebkitベースのjavaScript APIです.QtWebKitをコアブラウザの機能として使用し、webkitを使用してjavaScriptコードの実行をコンパイル解釈します.Webkitブラウザでできることに基づいて、それはすべてできます.暗黙的なブラウザだけでなく、cssセレクタ、wen規格のサポート、DOM操作、json、HTML 5など、ファイルI/Oを処理する操作も提供され、オペレーティングシステムにファイルを読み書きすることができます.phantomJSの用途は、ネットワークモニタリング、Webスクリーンショット、ブラウザを必要としないwenテスト、ページアクセスの自動化など、非常に広いと言えます.
ダウンロードアドレス
インストール
seleniumのインストール
pip install selenium
低指定バージョンseleniumのインストール
pip install selenium==2.48.0
phantomJSのインストール
ダウンロード後、任意のディレクトリに解凍し、私のパソコン->プロパティ->高度なシステム設定->環境変数->システム変数のpathを右クリックし、plantomJS.exeを環境変数に追加すればよい
Chromedriverのインストール
chromedriverのバージョンはChromeのバージョンと一致しなければなりません.そうしないと、2つのダウンロードアドレスが機能しません.1、http://chromedriver.storage.googleapis.com/index.html 2、https://npm.taobao.org/mirrors/chromedriver/
まずChromeのバージョンを確認し、ブラウザに入力する必要があります.chrome://version/
対応バージョン番号の圧縮パッケージをダウンロードし、
79.0.3945.130
のようにダウンロードできます.79.0.3945.16
79.0.3945.36
64ビットなしで次の32ビットの
圧縮パッケージを解凍し、chromedriverを見つけます.exeはchromeのインストールディレクトリ
C:\Program Files (x86)\Google\Chrome\Application
にコピーする(chromedriver.exeファイルのパスをコピーし、コンピュータの環境変数に追加する)私の現在の状況はchromedriver.exeファイルはPythonのScriptsディレクトリの下にドラッグし、chromedriver.exeも
C:\Program Files (x86)\Google\Chrome\Application
にありますが、このパスを環境変数に置かずに実行できます.完了したらcmdでchromedriverを入力してインストールに成功したかどうかを確認します
Starting ChromeDriver 79.0.3945.36 (3582db32b33893869b8c1339e8f4d9ed1816f143-refs/branch-heads/3945@{#614}) on port 9515
Only local connections are allowed.
Please protect ports used by ChromeDriver and related test frameworks to prevent access by malicious code.
使用
Selenium基本使用はこちらをご覧くださいhttps://www.jianshu.com/p/3aa45532e179
phantomJS使用
browser = webdriver.PhantomJS()
使用中に次のエラーメッセージが表示された場合
UserWarning: Selenium support for PhantomJS has been deprecated, please use headless versions of Chrome or Firefox instead
warnings.warn('Selenium support for PhantomJS has been deprecated, please use headless '
seleniumはPhantomJSを放棄したという意味で、火狐やグーグルのインタフェースレスブラウザを使うことをお勧めします.
ソリューション、seleniumバージョンの削減
pip install selenium==2.48.0
Chromedriver使用
Python 3+Selenium構成Chromeオプションをご覧いただけます
通常モード
driver = webdriver.Chrome()
driver.get('http://www.baidu.com/')
print (driver.page_source)
chromedriverインタフェースなしモード
chrome_options = webdriver.ChromeOptions()
#
chrome_options.add_argument('--headless')
# bug
chrome_options.add_argument('--disable-gpu')
browser = webdriver.Chrome(chrome_options=chrome_options)
browser.get('http://www.baidu.com/')
print(browser.page_source)
または
from selenium.webdriver.chrome.options import Options
chrome_options = Options()
#
chrome_options.add_argument('--headless')
# bug
chrome_options.add_argument('--disable-gpu')
browser = webdriver.Chrome(chrome_options=chrome_options)
browser.get('http://www.baidu.com/')
print(browser.page_source)
くり
idに基づいて対応するノードを見つけてパスワードを入力します
url = 'xxx'
pwd = 'xxx'
browser = webdriver.Chrome()
browser.get(url)
browser.find_element_by_id("xxx").send_keys(pwd)
キーボードリターン
from selenium.webdriver.common.keys import Keys
browser.find_element_by_id("xxx").send_keys(Keys.ENTER)
複数のclass名を含むtagオブジェクトを取得する場合は、
class="g-button g-button-blue"
(中央にスペースがある)など、使用することを推奨します.browser.find_element_by_css_selector(".g-button.g-button-blue")
または
browser.find_element_by_css_selector("[class='g-button g-button-blue']")
アナログクリック
browser.find_element_by_id("xxx").click()