我的英语很差,但我会尽力描述我遇到的问题。
我使用selenium webdriver测试网站,我用来编写脚本的语言是python。因此,我使用了Pyunit。
我知道如果我的测试套件没有异常,那么webdriver实例将被正确关闭(顺便说一句,我使用了chrome)但是,一旦抛出异常,脚本将被关闭,我必须关闭手动镀铬。
我想知道如何在python进程退出时实现这一点,任何剩余的打开的WebDriver实例也将被关闭。
顺便说一句,我使用了Page Object Design Pattern,下面的代码是我脚本的一部分:
class personalcenter(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()
self.page = personalCenter(self.driver,"admin","123456")
def testAddWorkExp(self):
blahblahblah...
def tearDown(self):
self.page.quit()
self.driver.quit()
if __name__ == "__main__":
unittest.main()
我已经搜索了这个问题的解决方案很长一段时间,但几乎每个答案都依赖于java和junit或testNG。我如何处理Pyunit的这个问题?
感谢您的每一个答案。
答案 0 :(得分:1)
来自tearDown()
文档:
调用测试方法后立即调用的方法 结果记录下来。即使测试方法引发了调用,也会调用此方法 异常,所以子类中的实现可能需要 检查内部状态特别小心。任何例外 通过这种方法提出的将被视为错误而不是测试 失败。 只有在
setUp()
成功时才会调用此方法, 无论测试方法的结果如何。默认 实施什么都不做。
因此,唯一不会调用tearDown
的情况是setUp
失败时。
因此,我只是在setUp中捕获异常,关闭驱动程序,并重新提升它:
def setUp(self):
self.driver = webdriver.Chrome()
try:
self.page = personalCenter(self.driver,"admin","123456")
except Exception:
self.driver.quit()
raise
答案 1 :(得分:1)
希望!!这会帮助你。您可能需要使用布尔表达式为 False 来关闭驱动程序
从 selenium 导入 webdriver
导入时间
class Firefoxweb(object):
def __init__(self):
print("this is to run the test")
def seltest(self):
driver=webdriver.Chrome(executable_path="C:\\Users\Admin\PycharmProjects\Drivers\chromedriver.exe")
driver.get("URL")
driver.find_element_by_xpath("//*[@id='btnSkip']").click()
driver.find_element_by_xpath("//*[@id='userInput']").send_keys("ABC")
driver.find_element_by_xpath("//*[@id='passwordInput']").send_keys("*******")
driver.find_element_by_xpath("//*[@id='BtnLogin']").click()
driver.close(False)
FF=Firefoxweb() FF.seltest()