Python + WebDriver -- 使用单元测试模块时没有启动浏览器
Python + WebDriver -- No browser launched while using unittest module
能不能请你帮我下一个。
我发现了问题,但无法解决。
当我使用下一段代码时,浏览器已经启动并且测试通过:
import unittest
from selenium import webdriver
driver = webdriver.Chrome('D:\chromedriver\chromedriver.exe')
driver.get("site URL")
但与 class 和方法相同 return 消息:"Process finished with exit code 0":
import unittest
from selenium import webdriver
class GlossaryPage(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome(executable_path='D:\chromedriver\chromedriver.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()
如何使用第二种情况(使用方法和 class)打开浏览器?
非常感谢您的帮助。
我不确定,因为我还没有测试过,但我怀疑浏览器仍然是从第一个代码打开的。所以我在这里的建议是使用 driver.close()
在你退出脚本后正确地终止进程。
import unittest
from selenium import webdriver
driver = webdriver.Chrome('D:\chromedriver\chromedriver.exe')
driver.get("site URL")
driver.close() # Must be there
同样,您可以在测试脚本中进行修改,将self.driver.close()
放在tearDown
方法中。
在单元测试中,您必须将测试代码放在调用的方法中
test_<custom_text_here>
而且我相信你想退出驱动程序而不是单元测试?
尝试替换行
unittest.quit()
有
self.driver.close()
在使用 Selenium 完成 Python 的 unittest 模块时,您必须考虑以下几个事实:
- 当您传递 Key
executable_path
时,通过单引号提供 Value 以及原始 r
开关。
- 当您定义
@Tests
名称时,测试以 test 开头,例如def test_NoLorem(自己):
- 当您调用
get()
时,请确保您传递的是有效的 url
,例如http://www.python.org
- 当您在
def tearDown(self):
中调用 quit()
方法时,通过 WebDriver 实例调用方法 self.driver.quit()
.
- 如果您正在使用 unittest 模块,则必须通过 调用
Tests
如果 __name__ == "__main__":
这是您自己的代码,需要进行少量修改:
import unittest
from selenium import webdriver
class GlossaryPage(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome(executable_path=r'C:\Utility\BrowserDrivers\chromedriver.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()
能不能请你帮我下一个。 我发现了问题,但无法解决。 当我使用下一段代码时,浏览器已经启动并且测试通过:
import unittest
from selenium import webdriver
driver = webdriver.Chrome('D:\chromedriver\chromedriver.exe')
driver.get("site URL")
但与 class 和方法相同 return 消息:"Process finished with exit code 0":
import unittest
from selenium import webdriver
class GlossaryPage(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome(executable_path='D:\chromedriver\chromedriver.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()
如何使用第二种情况(使用方法和 class)打开浏览器?
非常感谢您的帮助。
我不确定,因为我还没有测试过,但我怀疑浏览器仍然是从第一个代码打开的。所以我在这里的建议是使用 driver.close()
在你退出脚本后正确地终止进程。
import unittest
from selenium import webdriver
driver = webdriver.Chrome('D:\chromedriver\chromedriver.exe')
driver.get("site URL")
driver.close() # Must be there
同样,您可以在测试脚本中进行修改,将self.driver.close()
放在tearDown
方法中。
在单元测试中,您必须将测试代码放在调用的方法中
test_<custom_text_here>
而且我相信你想退出驱动程序而不是单元测试? 尝试替换行
unittest.quit()
有
self.driver.close()
在使用 Selenium 完成 Python 的 unittest 模块时,您必须考虑以下几个事实:
- 当您传递 Key
executable_path
时,通过单引号提供 Value 以及原始r
开关。 - 当您定义
@Tests
名称时,测试以 test 开头,例如def test_NoLorem(自己): - 当您调用
get()
时,请确保您传递的是有效的url
,例如http://www.python.org - 当您在
def tearDown(self):
中调用quit()
方法时,通过 WebDriver 实例调用方法self.driver.quit()
. - 如果您正在使用 unittest 模块,则必须通过 调用
Tests
如果 __name__ == "__main__": 这是您自己的代码,需要进行少量修改:
import unittest from selenium import webdriver class GlossaryPage(unittest.TestCase): def setUp(self): self.driver = webdriver.Chrome(executable_path=r'C:\Utility\BrowserDrivers\chromedriver.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()