python unittests 定义一个全局 webdriver 变量

标签 python selenium-webdriver webdriver python-unittest

我会为 webdriver 浏览器进行全局设置。 因此,我为所有单元测试编写了一个单独的类“设置”,我在其中使用变量:

class Settings:
 driver = webdriver.Firefox()
 #driver = webdriver.Chrome(r"C:\Users\...\chromedriver.exe")

在我的单元测试(全部具有相同的结构)中,我以这种方式调用驱动程序:

def setUp(self):
    self.driver = Settings.driver
def test_WebDriverAuthTestIn(self):

    driver = self.driver
    driver.get(lk_url)

def test_name(self):
    some test_logic in browser

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

if __name__ == '__main__':
unittest.main()

但是,在第一次成功运行单元测试后,其他测试会失败。浏览器无法打开进行下一个测试 (winerror-10061)。 似乎其他测试也无法运行驱动程序

如果我为每个测试都编写,效果会很好

driver = webdriver.Firefox()

而不是

self.driver = Settings.driver

最佳答案

定义全局 webdriver 变量通常不是最佳实践,并且您的代码无法正常工作,因为每次测试后,驱动程序都会关闭。一旦驱动程序关闭,您就无法重新打开它,因此您将需要一个新的实例来进行下一次测试。

class Settings:
  def getDriver():
    return webdriver.Firefox()

def setUp(self):
  self.driver = Settings.getDriver()
def test_WebDriverAuthTestIn(self):

  driver = self.driver
  driver.get(lk_url)

def test_name(self):
  some test_logic in browser

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

if __name__ == '__main__':
  unittest.main()

关于python unittests 定义一个全局 webdriver 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29429023/

相关文章:

python - 查找有关 Python WebDriver API 的信息

selenium - 将 WebDriver promise 转换为 native promise ?

python - 打印出列表中每个列表的平均值,在 Python 中每行一个

python - 如何更改 settings.py 以从 SQLite3 数据库迁移到 mysql 数据库?

java - 如何在 Selenium webdriver 中选择下拉选项?

Python 和 Selenium - 在不关闭浏览器的情况下关闭所有选项卡

javascript - 为元素创建 Selenium getText() 方法?

python - 如何获得识别肤色的阈值?

python - 'numpy.int6 4' object has no attribute ' 时间戳'

java - 如何确保我正在检查未选中的复选框 selenium java