firefox - 在同一个 Firefox 实例上顺序运行 Selenium 测试

标签 firefox testing selenium sequential

我正在尝试为拥有论坛的网站设置一些测试。因此,其中许多事情需要连续完成,包括登录、创建和删除线程等。

目前我已经使用 Selenium 设计了测试用例,并使用 webdriver 导出到 Python。

是否可以在所有测试之间只使用一个 webdriver 实例,以便它们可以连续执行?我是 python 的新手(来自 Java),所以我唯一的想法是创建一个基类来实例化 webdriver,让所有测试子类化基类,并将 webdriver 传递给测试。 (我只想用 Java ,但我强制自己学习一些 Python)。

或者 Selenium 中是否有其他内置功能可以实现此目的?

感谢您的宝贵时间。

最佳答案

我设法通过让我的测试子类化的基类来让它工作。这个基类将创建一个静态驱动程序,该驱动程序将通过 setUp() 方法设置一次并返回到后续测试。

from selenium import webdriver
import unittest, time, re

class TestBase(unittest.TestCase):

    driver = None
    rand =  str(random.uniform(1,10))
    base_url = "desiredtestURLhere"

    def setUp(self):
         if (TestBase.driver==None):
            TestBase.driver = webdriver.Firefox()
            TestBase.driver.implicitly_wait(30)
         return TestBase.driver

然后我运行的两个测试...

import unittest, time, re
from testbase import TestBase

class Login(TestBase):

    def test_login(self):
        driver = TestBase.driver
        base_url = TestBase.base_url
        driver.get(base_url)
        # etc

要连续运行的测试 #2...

import random
import unittest, time, re
from testbase import TestBase

class CreateThread(TestBase):

    def test_create_thread(self):
        driver = TestBase.driver
        base_url = TestBase.base_url
        rand = TestBase.rand
        driver.get(base_url + "/forum.php")
        # etc

我要运行的 testsuite.py...

import unittest, sys
# The following imports are my test cases
import login
import create_thread

def suite():
    tsuite = unittest.TestSuite()
    tsuite.addTest(unittest.makeSuite(login.Login))
    tsuite.addTest(unittest.makeSuite(create_thread.CreateThread))
    return tsuite

if __name__ == "__main__":
    result = unittest.TextTestRunner(verbosity=2).run(suite())
    sys.exit(not result.wasSuccessful())

这是我第一次接触 Python,所以如果有任何明显的问题,我将不胜感激。

关于firefox - 在同一个 Firefox 实例上顺序运行 Selenium 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10521775/

相关文章:

javascript - IE11 和 Mozilla css 转换的奇怪东西

docker - 从浏览器查看 Selenium 网格时,当从 docker 使用集线器和节点时,看不到 Selenium 网格正在运行

bash - 在 Bash 中测试文件是否存在

java - 尝试以嵌入式模式启动 BrowserMobProxyServer 时发生 JNI 错误(Java、Maven)

java - 在 POM 中使用 By - Selenium

bash - 使用 bash 打开和关闭进程

javascript - 如何在 Chrome 和 Firefox 浏览器中显示 3D PDF

html - 没有 IE 和 Firefox 背景

python - Django 中的 `assertIn` 和 `assertContains` 有什么区别?

android - 将长按(或任何触摸事件)发送到 ActivityInstrumentationTestCase2 中的 View