如何在python中将Selenium WebDriver屏幕截图显式写入目录

如何在python中将Selenium WebDriver屏幕截图显式写入目录,python,selenium,selenium-webdriver,pycharm,Python,Selenium,Selenium Webdriver,Pycharm,我正在使用PyCharm3开发Win7。我有一个从selenium IDE导出的功能测试“y1.py”。它包括: class Y1(unittest.TestCase): def setUp(self): self.driver = webdriver.Firefox() self.driver.implicitly_wait(30) self.base_url = "https://www.yahoo.com/" self

我正在使用PyCharm3开发Win7。我有一个从selenium IDE导出的功能测试“y1.py”。它包括:

class Y1(unittest.TestCase):
    def setUp(self):
        self.driver = webdriver.Firefox()
        self.driver.implicitly_wait(30)
        self.base_url = "https://www.yahoo.com/"
        self.verificationErrors = []
        self.accept_next_alert = True

    def test_y1(self):
        driver = self.driver
        driver.get(self.base_url)
        driver.find_element_by_link_text("Weather").click()
        driver.get_screenshot_as_file('foo.png')    

    def tearDown(self):
        self.driver.quit()
        self.assertEqual([], self.verificationErrors)    

if __name__ == "__main__":
    unittest.main()
当我从pycharm manage.py工具运行脚本时,我意识到屏幕截图正在保存到

PyCharm 3.0.1\jre\jre\bin"
此外,由于某些原因,显式指定路径不起作用:

(driver.get_screenshot_as_file('c/foo1.png') ).
我已经尝试了基于此的变体,但无法使其工作。如何使用python将屏幕截图直接保存到项目根目录下的“屏幕截图”目录中

编辑:


我意识到命令行的manage.py和pycharm的tools->manage.py(这就是我一直在使用的)是有区别的。当您从命令行运行它时,测试运行得更快,屏幕截图保存在项目的根目录中(这正是我想要的)。希望这对某人有帮助Bill

我没有成功地使用
获取屏幕截图作为文件()
,但我提供了另一种选择,使用
获取屏幕截图作为文件64()
。在其他模块中定义此功能:

def save_screenshot(self, driver, file_name_prefix):
    img_str64 = driver.get_screenshot_as_base64()
    f = open("screenshots/%s.png" % file_name_prefix, "wb")
    f.write(img_str64.decode("base64"))
    f.close()
然后,在测试中更换

driver.get_screenshot_as_file('foo.png')

你真的试过
c/foo1.png
?这不是有效的路径。。怎么样
C:\\foo1.png
我在上面的帖子中试过这个和其他的。请看编辑。谢谢,我会查出来的
module_containing_this_function.save_screenshot("foo")