Python + WebDriver语言 - - 使用 unittest 模块时未启动浏览器



你能帮我下一个吗?我发现了问题,但无法解决。当我使用下一个代码时,浏览器已启动并且测试已通过:

import unittest
from selenium import webdriver
driver = webdriver.Chrome('D:chromedriverchromedriver.exe')
driver.get("site URL")

但与类和方法相同,返回消息:"进程已完成,退出代码为 0":

import unittest
from selenium import webdriver
class GlossaryPage(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Chrome(executable_path='D:chromedriverchromedriver.exe')
        self.driver.maximize_window()
        self.driver.implicitly_wait(10)
    def NoLorem(self):
        driver = self.driver
        driver.get("site URL")
    def tearDown(self):
        unittest.quit()

如何使用第二种情况(使用方法和类(打开浏览器?

非常感谢任何帮助。

在使用Selenium使用Python的unittest模块时,您必须考虑以下一些事实:

  • 传递密钥executable_path通过单引号和原始r开关提供
  • 当您定义@Tests命名以测试开头的测试时,例如def test_NoLorem(self(:
  • 当您调用时get()请确保您传递的是有效的url例如 http://www.python.org
  • 在 中调用 quit() 方法时def tearDown(self):通过 WebDriver 实例调用该方法作为self.driver.quit()
  • 如果你使用的是 unittest 模块,你必须通过 if __name__ == "__main__" 调用Tests
  • 这是您自己的代码,需要稍作修改:

    import unittest
    from selenium import webdriver
    class GlossaryPage(unittest.TestCase):
        def setUp(self):
            self.driver = webdriver.Chrome(executable_path=r'C:UtilityBrowserDriverschromedriver.exe')
            self.driver.maximize_window()
            self.driver.implicitly_wait(10)
        def test_NoLorem(self):
            driver = self.driver
            driver.get("http://www.python.org")
        def tearDown(self):
            self.driver.quit()
    if __name__ == "__main__":
        unittest.main()
    

我不确定,因为我还没有测试过它,但我怀疑浏览器仍然从第一个代码打开。所以我在这里的建议是,一旦你退出脚本,就使用 driver.close() 正确终止进程。

import unittest
from selenium import webdriver
driver = webdriver.Chrome('D:chromedriverchromedriver.exe')
driver.get("site URL")
driver.close()  # Must be there

同样,可以在测试脚本中进行修改,以将self.driver.close()放入tearDown方法中。

在 unittest 中,您必须将测试的代码放在名为

test_<custom_text_here>

而且我相信你想退出司机而不是单元测试?尝试更换线路

unittest.quit()

self.driver.close()

最新更新