セレンを用いたPythonを用いたテスト事例の記述


導入



どのように実際のユーザーを模倣するUIをテストするには?さて、フロントエンドのテストフレームワークのトンがありますCypress , TestCafe , Protractor .
私があなたに紹介しようとしていることは、フロントエンドテストの業界標準と考えられており、ウェブサイトのテスターの間でかなり人気があります.これは、実際のユーザーを模倣するだけで始めるために別のプログラミング言語を学ぶことなく、UIとの対話を模倣します.
あなたがセレンを使用しているとき、各プログラミング言語の間に微妙な違いがあることに注意してください.ライブラリが作成され、複数のオープンソースの貢献者によって維持されるため.これは、セレンを使用して、特定のプログラミング言語のラッパーを構築する他に主要なセレンの寄稿者に提携していない可能性があります.

なぜセレン?



セレンは、ウェブサイトのUIテストではなく、選択のツールです.代わりに、実際のユーザーを模倣するので、データのスクラップ&自動化に使用されます.
JavaScriptを使用してデータを表示するウェブサイトからデータをscrapeしようとすると困難が発生します.JavaScriptコードを実行するためにブラウザを設定する必要があります.を使用することで回避できるSplash しかし、これはデータを抽出するための追加の設定が付属しています.

書き込みテストケース



テストケースを書くには、テストフレームワークの選択がPytest として簡単に誰もがテストケースとfixtures . これは、Webサイトのテストケースを実行する前に、状態や環境の迅速な読み込みを許可します.
これにより、user journey . ユーザーがナビゲーションしたり、ウェブサイトと対話する方法を自動的にテストします.これは、ユーザーの相互作用やUIエラーをキャッチするためにあなたのCI/CDのプロセスに統合することができます.生産サーバーへの実際の展開の前に、それを誰もがそれを使用するために生きること.

CSS対XPath



セレンを使用したウェブサイトのテストケースを書く.あなたがする必要がある最初のこと.ブラウザインスタンスを起動し、ブラウザインスタンスをWebサイトリンクにリダイレクトします.それは、ウェブサイトの特定のHTML要素を見つけています.
それで、セレンはそれで何かをすることができました.これは、クリックを開始するか、要素を読み込むか、そのHTML要素のデータを抽出して、正しい値を持っているかどうかをチェックすることで使用できます.
あなたがそれを行うための複数の方法があります.あなたがそれをする最も一般的な方法はselector どちらを使うCSS or Xpath パス.
私の個人的な好みは、選択したいHTML要素のXPathを使用することです.HTML要素は、Webページ内の要素を表すクラスIDまたはName属性をほとんど使用しないためです.
FirefoxやChromeを使用している場合は、マウスを右クリックして組み込みの開発ツールを表示します.「検査」を選択したら、もう一度右クリックして、テストケースを実行しているときに要素を選択したい要素のXPathをコピーします.


フロントエンドWebフレームワークに対するテスト事例の記述



テストケースを書く前に、PythonマシンとChromeをLinuxマシンを使ってインストールしたことを確認してください.
pip install pytest selenium
sudo apt update
sudo apt install chromium-chromedriver
テストケースを書くには、まずファイルを作りますtest_user_flow.py 次のコードを使用します.
from selenium import webdriver  # imports the selenium webdriver


def test_get_title():
    path = "http://www.python.org"  # the starting url
    driver = webdriver.Chrome()  # initialise a driver that is using the chrome driver for selenium
    driver.get(path)  # redirects the driver to that url path

    assert "Python" in driver.title  # a test case which checks if the title contains the "Python"

    driver.close()  # closes the browser once it has completed


test_get_title()

テストケースを実行し、Chromeブラウザをポップアップして2回実行すると、テストケースのパスが表示されます.
pytest -v

結論



私は記事があなたのために有用であり、セレンにあなたを紹介願っています.これは主にUIテストのために使用されますか?しかし、複数のプログラミング言語の広い支持でJavaScript重いウェブサイトのためにデータを表示するために、データ・スクラップとオートメーションにおいて.
私はまた、なぜあなたが使用を選択する必要が理由を記載していたXpath HTML要素の選択.何も入っていないときは使いますclass attributes or id Webページ内の要素を識別するには.
あなたがこの記事が好きならばAdventurer's Newsletter 興味深いコンテンツを含んでいる私の冒険家のニュースレターのために、私はパイソン、ウェブ開発、スタートアップの領域で、週を越えてつまずきます.
また、私の記事の最新の更新プログラムを取得するには
元のポストはWriting Test Cases using Python with Selenium - Reading Time: 4 Mins カバー画像Daniel Korpai on Unsplash

リファレンス

  • Cypress
  • TestCafe
  • Protractor
  • Selenium Python
  • Splash
  • Web Automation With Selenium
  • Advanced Python Programming: Browser Automation with Selenium
  • PyTest
  • Fixtures
  • User Journey
  • Selector
  • CSS
  • Xpath
  • Obey the Testing Goat
  • Python Testing with Pytest
  • The power of Headless Chrome and Browser Automation
  • Getting Started with Selenium - Using Selenium to write tests
  • Undraw