Skip to main content
 首页 » 编程设计

python之如何使用一个 Firefox 实例 Selenium WebDriver 和 Python 运行多个测试

2025年05月04日41yyy_WW

我正在学习使用 Selenium WebDriver 和 Python 编写自动测试。我在 WidgetArea 类中有几个测试,我想在一个 Firefox 实例中运行它们,我知道我需要指定 setUp 和 tearDown as @classmethod 但我不知道我还应该改变什么来实现这个目标?代码可以在下面找到:

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 

请您参考如下方法:

我不将 unittests 与 selenium 一起使用,因此我可以建议在特定框架中进行测试,尽管有 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() 

所有断言都将在单个浏览器 session 期间执行。