如何使用一个Firefox实例运行多个测试,Selenium WebDriver with Python



我正在学习使用Selenium WebDriver和Python编写自动测试。我在WidgetArea类中有几个测试,我想在Firefox的一个实例中运行它们,我知道我需要指定setUptearDown作为@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
我不将

unittestsselenium一起使用,所以我可以建议特定框架中的测试,尽管有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()

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

最新更新