无法使用selenium拍摄屏幕截图

2024-05-21 01:30:18 发布

您现在位置:Python中文网/ 问答频道 /正文

刚在运行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,它与relative path一起工作,发生了什么?在

save_screenshot()的结果是True。在

操作系统:macOS Sierra 10.12.5 解释器:2.7.12(/Library/Frameworks/Python.framework/Versions/2.7/垃圾箱/Python2.7) 另外,我使用的是Pyenv,我的Pyenv全局是'system'。在


Tags: divurlimgsizebyhtmldriverbody
2条回答

您必须考虑这样一个事实:在调用save_screenshot()时,必须提到您希望将屏幕截图保存到的完整路径。这应该以.png扩展名结束。根据您的情况,您可以考虑通过您的IDE手动在项目空间内创建一个名为的“屏幕截图”的目录。在您的代码中,将路径描述为:

driver.save_screenshot('/screenshots/123.png')

您可以使用下面的函数作为相对路径,因为绝对路径不适合添加到脚本中

导入

import sys, os

使用以下代码:

^{pr2}$

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

在os.path.join操作系统还可以防止您在unix和windows等跨平台上运行脚本。它将在运行时根据操作系统生成路径选择器。它是类似于文件.separtor在java中

相关问题 更多 >