无法使用selenium截取屏幕截图

时间:2017-07-11 05:34:11

标签: python python-2.7 selenium web-scraping web-testing

在运行selenium时遇到一个奇怪的问题来截取网页截图,下面是我的代码的一部分:

url = "http://acme.com/licensemaker/licensemaker.cgi?state=California"
driver = webdriver.PhantomJS()
driver.maximize_window()
elem = driver.get(url)
elem = \
driver.find_element_by_xpath
('/html/body/form/center/div/table/tbody/tr[2]/td/input[2]')
elem.send_keys(comb)
driver.find_element_by_xpath
('/html/body/form/center/div/table/tbody/tr[2]/td/input[3]').click()
driver.save_screenshot('../screenshots/1.png')
print('ok')
img = driver.find_element_by_xpath('/html/body/center[1]/div/a/img')
location = img.location
size = img.size
print(size)

我尝试了PhantomJS和Safari驱动程序,他们也无法保存屏幕截图,但我可以得到两者的输出' ok'以及' location'的价值。 我不明白为什么我无法保存屏幕截图。

通过绝对路径保存文件失败,但只有名称有效。我去年使用相同版本的Selenium它的相对路径,发生了什么?

save_screenshot()的结果是True

操作系统:macOS Sierra 10.12.5 译员:2.7.12(/Library/Frameworks/Python.framework/Versions/2.7/bin/python2.7) 另外,我使用的是Pyenv,我的Pyenv全球系统就是'系统'。

2 个答案:

答案 0 :(得分:1)

您必须考虑这样一个事实:在调用save_screenshot()时,您必须提及您希望保存屏幕截图的完整路径。这应该以{{1​​}}扩展名结尾。根据您的情况,您可以考虑通过 IDE 手动<在项目空间中使用名称&#34; screenshots&#34; 创建目录/ em>的。在您的代码中提到路径为:

.png

答案 1 :(得分:0)

您可以使用以下函数作为相对路径,因为在脚本中添加绝对路径不是一个好主意

导入

import sys, os

使用以下代码:

ROOT_DIR = os.path.dirname(os.path.abspath(__file__))
screenshotpath = os.path.join(os.path.sep, ROOT_DIR,'Screenshots'+ os.sep)
driver.get_screenshot_as_file(screenshotpath+"testPngFunction.png")

确保创建存在.py文件的文件夹。

os.path.join还会阻止您在跨平台上运行脚本,例如:unix和windows。它将在运行时根据操作系统生成路径分隔符。它类似于java中的 File.separtor