Python 3.x用のSelenium Webドライバーの変換

そのため、Webアプリケーションのデバッグに着手しました。 ブラウザでボタンを「突く」、リンクをたどり、同時に要素のステータスを確認する必要があります。 つまり、特定のスクリプトがユーザーアクション用のスクリプトを設定し、同時にデータベース内の要素と変更の状態をチェックするように、統合テストが必要です。



あなたがどこかを見つけた、聞いたことがある、あるいは長い間、これらの問題のために、Selenium WebDriverと呼ばれる特別なツールキットを試してみたいと思っていたとします。 SeleniumのWebサイトにアクセスすると、喜んで喜んでジャンプします。お気に入りのPythonスクリプト言語がサポートされています。 しかし悲しいかな、Djangoの場合のように、開発者はまだPython 3.xの手に届きませんでした。 そのため、洗練されたすべてのおいしい構文の一部とUTF-8の組み込みサポートは、デフォルトではサポートされていません。



ただし、Python 2と3、および標準ユーティリティ2to3.pyの違いについての知識を身に付けて、2つの方法で統合テスト用のテストスクリプトの開発における幸福と一般的な進歩を妨げるすべてを克服します。



まず、WebDriver Selenium自体を古くて常に良いPython 2+向けにダウンロードする必要があります。サイトをさまようことなく、不必要なものをダウンロードするためです。ダウンロードページへのリンクは、 「selenium -<バージョン> .tar.gz "。



一般に、理論的には、このアーカイブに含まれるseleniumフォルダーをそこからPython3x \ Libフォルダーにコピーし、2to3.pyを適用する必要があります。その後、1つのファイル「remote_connection.py」をわずかに修正する必要があります。 実際、古い不親切なPython 2.xでは、C / C ++のように、文字列はバイト配列とまったく違いませんでした、つまり 基本的に、文字とバイトは区別されませんでした。 したがって、今日までの古いPythonアプリケーションでは、あらゆる種類のネットワークライブラリが、バイト配列ではなくネットワーク上で文字列(!)を送受信します。 この災害に対処するのに役立つ2つの関数があります。それぞれ、文字列のエンコード()とバイト配列のデコード()です。



原則として、私は長い間この変換の自動化のためのスクリプトを書きましたが、もちろんすべてが同じPython 3にあり、それをSelenium開発グループのPython 3サポートの問題に投稿しました(このトピックは、 3番目のpythonのサポートは計画されていません)。 スクリプトリンク: pyselenium.py 、Selenium WebドライバーのPython 3.xサポートトピックへのリンク: Selenium WebDriverのPython 3.xをサポートします。



pyselenium.pyスクリプトは、最初にダウンロードしたtar.gzファイルを受け取り、アーカイブへのパスを引数として受け取り、セレンをPython3x \ Libフォルダーにコピーし、Python 3に従ってWebドライバーを変換します。 UTF-8の行。 実際、スクリプトはまず2to3.pyユーティリティを実行し、エンコード()行を必要な場所に挿入してからネットワーク経由で送信し、次に受信データの行にデコード()します。



原則として、このスクリプトはPython言語のおかげで、非常に読みやすく、短く、理解しやすいものです。 スクリプトが機能するために必要なのは、Python 3.xインタープリターと実際のアーカイブファイルだけです。 スクリプトコードで読み取り可能なページにリンクします。



Pythonインタラクティブモードで確認できます。

>>>from selenium.webdriver import Firefox

>>>driver = Firefox()

>>>driver.get('http://ya.ru/')







兄弟のFire Foxが表示され、指定されたサイトが読み込まれます。

ドライバーのさらなる使用は、あなたの想像力に依存します。



Selenium WebDriverの操作の詳細については、こちらをご覧ください。

Selenium Webdriverのドキュメント



All Articles