如何使用一个 Firefox 实例 运行 多个测试,Selenium WebDriver Python?
How to run several tests with one Firefox instance, Selenium WebDriver with Python?
我正在学习使用 Selenium WebDriver 和 Python 编写自动测试。我在 WidgetArea
class 中有几个测试,我想 运行 它们都在一个 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()
所有断言将在单个浏览器会话期间执行。
我正在学习使用 Selenium WebDriver 和 Python 编写自动测试。我在 WidgetArea
class 中有几个测试,我想 运行 它们都在一个 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()
所有断言将在单个浏览器会话期间执行。