2
import sys 
    import os 
    sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '../..'))) 
    from selenium import web driver 
    from selenium.webdriver.common.desired_capabilities import DesiredCapabilities 
    from selenium.common.exceptions import NoSuchElementException 
    from selenium.webdriver.support.ui import WebDriverWait 

    class WebDriver(): 

     def setup(self): 
     self.driver = WebDriver() 
     self.driver = webdriver.Firefox() 
     self.base_url = "www.google.com" 
     self.driver.get(self.base_url) 
     self.driver.delete_all_cookies() 
     self.driver.implicitly_wait(30) 
     self.verificationErrors = [] 
     self.accept_next_alert = True 
     self.driver.maximize_window() 

     def teardown(self): 
     self.driver.quit() 

これを私のオートメーションフレームワークのベースファイルとして使用したいと思いますが、動作していないようです。助けてください!セレン/ pythonフレームワークの構築に関する助言?

また、字下げを認識しているため、ここには問題はありません。 私はこれをインポートして、フレームワークに追加するスクリプトごとに設定して解凍できるようにしたいと考えています。

フレームワークを構築する方法を理解する助けがあれば幸いです!おかげで

答えて

1

どのようなテストフレームワークを使用して考えていますか?これは、この論理をテストの前/後(またはテストスイート全体)に実行するために使用する構文を完全に変更します。

その他の考慮事項

どのようなテストをしていますか?

  • "unit test"? (クォータb/cでは、Webページ用にPythonでユニットテストを行うことはできません)
  • インテグレーションテスト
  • ストレス/パフォーマンステスト?

あなたのWebアプリケーションのUIを単体テストする方法としてSeleniumを考えているなら、いくつかのJavaScriptテストフレームワークをチェックアウトしたいかもしれません。あなたが JavaScriptをあなたのUIに使用している場合は、明らかにJavaScriptフレームワークをチェックアウトしてください。 JavaScriptを使用してDOMを操作し、DOMを操作するためにSeleniumを使用しようとすることは、DOM上の巨大な競合条件です。

セレンを使用してテストする予定はありますか?

  • UIのボタンが正しく接続されていることを確認しても問題ありませんか?
  • webappのビジネスルールは?

私は強くあなたのWebアプリで(つまり、私は、このボタンをクリックすることができます)幸せなパスを検証するためにセレンを使用することをお勧めし、あなたのビジネスルールのテストではないのでしょう。それらのビジネスルールを実行するためにAPIを叩いてください。 APIはUIよりも変更される可能性が低く、UIの変更は定期的にSeleniumテスト(アプリケーションで実際のエラーではなく失敗を生成するテストブレーク)で誤検出を引き起こします。

このうちのどれにもご安心ください!あなたがテストを書いているのは素晴らしいことです!

セレンは正しく使用すると良いツールですが、セレンは過負荷になり、(JSとJSフレームワークの量に応じて)一貫性のないテストになります。特にあなたのコードについて

ポインター:

は、必要に応じて、あなたがインスタンス化し、バインドできるクラス何かを作る - 簡単に枠組みを越えたコードを使用して行い、かつ容易にB/CあなただけのPythonインタプリタを開いて、それを使用することができますデバッグ。

from my_webdriver import MyDriver 

driver = MyDriver() 
driver.get('http://my-awesome-app.org') 
element = driver.find_element_by_id('some-id') 
element.click() 

をunittestの枠組みの中で、それをバインド:

import unittest 

from my_webdriver import MyDriver 

class AwesomeTest(unittest.TestCase): 

    @classmethod 
    def setUpClass(cls): 
     """Runs once per suite""" 
     cls.driver = MyDriver() 

    def setUp(self): 
     """Runs before each test case""" 
     self.driver.reset() 

    @classmethod 
    def tearDownClass(cls): 
     cls.driver.teardown() 

    def test_stuff(self): 
     """a test case!""" 
     # stuff 
     pass 

幸運、それを使用して

# file named my_webdriver.py 

import sys 
import os 
sys.path.append(os.path.abspath(os.path.join(os.path.dirname(__file__), '../..'))) 
from selenium import webdriver 
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities 
from selenium.common.exceptions import NoSuchElementException 
from selenium.webdriver.support.ui import WebDriverWait 

class MyDriver(): 

    def __init__(self): 
    self.driver = webdriver.Firefox() 
    self.base_url = "www.google.com" 
    self.driver.implicitly_wait(30) 
    #self.verificationErrors = [] # delete this line, and deal with errors in the framework 
    self.accept_next_alert = True 
    self.driver.maximize_window() 
    self.reset() 

    def reset(self): 
     """So I can be lazy and reset to a know starting point before each test case""" 
     self.driver.get(self.base_url) 
     self.driver.delete_all_cookies() 

    def teardown(self): 
    self.driver.quit() 

!これが役に立つ/有用であることを願っています。

* PyConでDOMを操作するためのPythonを使用していることがわかりましたが、誰もその作業を生産中に行っているとは思いません。

+0

ありがとう!正確に私が必要とした助け。私は、webdriverとsaucelabsに統合するページオブジェクトモデル型フレームワークの構築を検討していました –

関連する問題