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()