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