web-dev-qa-db-ja.com

PythonおよびWebDriverを使用してAssert / VerifyElementPresent?

SeleniumからWebDriverへの変更とそれぞれのドキュメントに混乱しているかもしれません。ドキュメントのテスト設計に関するセクションで、AssertElementPresentなどの Assert vs Verify の使用についての話があります。ただし、WebDriverチュートリアルを実行してテストをセットアップし始めると、これはPythonからは利用できないようです。私はドキュメントで何かを見落としているのですか、これはWebDriverには適用できません、Pythonの使用には適用できません。pythonの機能を使用し、Seleniumからのコマンドをアサート/検証しないなど)

20
Dan Roberts

webdriverは、ブラウザーを駆動するためのライブラリです。使用したいのは* find_element *メソッドで、要素を見つけて、それらに対して条件をアサートします。

たとえば、次のコードは要素のコンテンツに対してアサーションを実行します。

from Selenium import webdriver

browser = webdriver.Firefox()
browser.get('http://www.example.com')
element = browser.find_element_by_tag_name('h1')
assert element.text == 'Example Domains'
browser.quit()
  • この例は純粋なpythonがアサートされていることに注意してください。より強力なアサーションを持つpythonのunittestのようなテストフレームワークを使用することをお勧めします。
21
Corey Goldberg

Selenium RCでは、検証/アサートメソッドが存在します。 WebDriverでは、そうではありません。また、検証とアサートの機能と、テストにおけるそれらの役割に注意することも重要です。 Selenium RCでは、verifyを使用して、テキスト、要素、または何があるかなど、テストのチェックを実行します。一方、アサートはテストが失敗して停止する原因になります。利点と利点は、参照したリンクで説明されています。

WebDriverには、言うごとに確認/アサートメソッドがありません。アサーションはテスト自体で実行されます。コーリーの答えを見てみると、彼は要素のテキストに「アサート」を実行します。要素のテキストが「Example Domains」ではない場合、AssertionErrorが発生し、テストは事実上失敗します。しかし、検証についてはどうですか?前述のとおり、WebDriverにはありません。しかし、比較を行うことで同等のことを実行できます。

if element.text != u'Example Domains':
    print "Verify Failed: element text is not %r" % element.text

したがって、この場合、テストは失敗しません。ただし、検証は引き続き行われ、標準出力に出力されます。

結局のところ、それはあなたが失敗したいものの問題です。これはテスト設計の詳細です。お役に立てれば。

6
kenneth koontz

これを確認するには、次の関数を使用する必要があります。

def is_element_present(self, how, what):
    try: self.driver.find_element(by=how, value=what)
    except NoSuchElementException as e: return False
    return True

これは、Pythonコードにエクスポートするときに Selenium IDE によってデフォルトで生成されます。

次に、以下のように要素をアサートできます。

self.assertTrue(self.is_element_present(By.ID, "footer"))
self.assertTrue(self.is_element_present(By.CSS_SELECTOR, "header.global-header"))

Byを使用するには、次のインポートが必要です。

from Selenium.webdriver.common.by import By
5
kenorb

別の方法は次のとおりです。

from Selenium import webdriver
driver = webdriver.Firefox()
driver.get('http://www.testing.com')
element = driver.find_element_by_xpath('xpath of the element').text
assert element == 'Sample Text'
driver.quit()
1
Vipin