【问题标题】:How to explicitly write a Selenium WebDriver screenshot to a directory in python如何将 Selenium WebDriver 屏幕截图显式写入 python 中的目录
【发布时间】:2014-02-24 10:57:18
【问题描述】:

我正在使用 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') ).

我已经尝试过基于Webdriver Screenshot 的变体,但无法使其正常工作。如何使用python直接将截图保存到我的项目根目录下的“截图”目录?

编辑:

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

【问题讨论】:

  • 你真的试过c/foo1.png吗?这不是一个有效的路径.. C:\\foo1.png 怎么样
  • 我确实在上面的帖子中尝试过这个和其他人。请参阅编辑。

标签: python selenium selenium-webdriver pycharm


【解决方案1】:

我没有成功使用get_screenshot_as_file(),但我提供了使用get_screenshot_as_base64() 的替代方案。在另一个模块中定义这个函数:

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')
module_containing_this_function.save_screenshot("foo")

【讨论】:

  • 谢谢,我去看看
猜你喜欢
  • 1970-01-01
  • 2017-02-12
  • 2014-08-25
  • 1970-01-01
  • 2015-10-28
  • 2018-02-18
  • 1970-01-01
  • 2018-05-21
  • 1970-01-01
相关资源
最近更新 更多