在运行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全球系统就是'系统'。
答案 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