2016-02-29 116 views
0

我正在學習使用Selenium WebDriver和Python編寫自動測試。我在WidgetArea類中有幾個測試,我想在Firefox的一個實例中運行它們,我知道我需要指定setUptearDown作爲@classmethod,但我不知道還應該爲實現該目標而更改哪些內容?代碼可以發現如下:如何用一個Firefox實例,Selenium WebDriver和Python一起運行多個測試?

import unittest 
from selenium import webdriver 


class WidgetArea(unittest.TestCase): 

@classmethod 
def setUp(cls): 

    # create new firefox session 
    cls.driver = webdriver.Firefox() 
    cls.driver.implicitly_wait(30) 
    cls.driver.maximize_window() 
    # navigate to aplication page 
    cls.driver.get("http://demoqa.com/") 
    cls.driver.title 

def test_widget_area(self): 

    elements = self.driver.find_elements_by_xpath("//div[@id='secondary']/aside") 
    self.assertEqual(4, len(elements)) 

def test_widget_list(self): 

    elements = self.driver.find_elements_by_xpath("//ul[@id='menu-widget']/li") 
    self.assertEqual(7, len(elements)) 

def test_interaction(self): 

    elements = self.driver.find_elements_by_xpath("//ul[@id='menu-interactions']/li") 
    self.assertEqual(5, len(elements)) 

@classmethod 
def tearDown(cls): 
    cls.driver.quit() 

if __name__ == '__main__': 
    unittest.main 
+0

使用'selenium'作爲'unittests'來執行自動化測試並不是強制性的。您可以構建自己的框架並根據需要對其進行調整 – Andersson

+0

謝謝,我是一般的自動測試新手,還有OOP語言中的alos,所以我很喜歡從開始和單元測試接縫的一些東西開始,作爲很好的選擇。我認爲我已經開始編寫我自己的自動框架了,據我所知:) – vertigo448

+0

@Andersson你知道我的問題的答案嗎?我有點困在這堵牆上:/謝謝 – vertigo448

回答

0

我不selenium使用unittests,所以只要你喜歡儘管unittests規則,我可以告訴在特定的框架的測試,你可以調整和更新:

from selenium import webdriver 

class WidgetArea(): 

    def setUp(self): 
    self.driver = webdriver.Firefox() 
    self.driver.implicitly_wait(30) 
    self.driver.maximize_window() 
    self.driver.get("http://demoqa.com/") 

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

    def widget_area(self): 
    elements = self.driver.find_elements_by_xpath("//div[@id='secondary']/aside") 
    try: 
     assert len(elements) == 4 
     print("Test pass") 
    except AssertionError: 
     print("Assertion failed") 

    def widget_list(self): 
    elements = self.driver.find_elements_by_xpath("//ul[@id='menu-widget']/li") 
    try: 
     assert len(elements) == 7 
     print("Test pass") 
    except AssertionError: 
     print("Assertion failed") 

    def interaction(self): 
    elements = self.driver.find_elements_by_xpath("//ul[@id='menu-interactions']/li") 
    try: 
     assert len(elements) == 5 
     print("Test pass") 
    except AssertionError: 
     print("Assertion failed") 

    def main(self): 
    self.setUp() 
    self.widget_area() 
    self.widget_list() 
    self.interaction() 
    self.tearDown() 


if __name__ == '__main__': 
    new = WidgetArea() 
    new.main() 

所有斷言將在單個瀏覽器會話期間執行。

+0

嗨,非常感謝您的支持:) – vertigo448

+0

如果這很有用,請爲此答案+1 +1 Upvote,如果這解決了您的問題,請接受它與檢查下的回答率,如果這不起作用,告訴我應該改進什麼 – Andersson

+0

嗨,@安德森,+ 1Upvote,我只是在低級別的聲譽,使其顯示,我接受作爲答案。非常感謝你,最好的問候 – vertigo448

相關問題