Heroku上でpython chromedriverでscreenshotがしたい
解決したいこと
Heroku上でpython chromedriverでscreenshotがしたいです。。
driver.save_screenshot('scsho.png')をした時
返り値はTrueですが実際にheroku run bashで中身を見ても保存されません。
どのようにして保存しデータベースに格納することができるでしょうか?
もしくは不可能なのでしょうか・・
また、Cloudinaryを使うことでadminからは画像を保存することができています。
該当するソースコード
def sele_test(request):
driver_path = '/app/.chromedriver/bin/chromedriver'
options = Options()
options.add_argument('--disable-gpu')
options.add_argument('--disable-extensions')
options.add_argument('--proxy-server="direct://"')
options.add_argument('--proxy-bypass-list=*')
options.add_argument('--start-maximized')
options.add_argument('--headless')
options.add_argument('--no-sandbox')
options.add_argument('--disable-dev-shm-usage')
#herokuでこのoptionを付けると保存できるという記事をみたので、意味は理解していませんがとりあえず貼ってみました。
options.binary = '/app/.apt/usr/bin/google-chrome'
driver = webdriver.Chrome(executable_path=driver_path, chrome_options=options)
driver.get('https://weather.yahoo.co.jp/weather/')
driver.set_window_size(1250, 1036)
a = driver.save_screenshot('/app/a.png')
b = driver.save_screenshot('b.png')
c = driver.save_screenshot('/tmp/c.png')
UploadedImage.objects.create(image='/app/a.png')
UploadedImage.objects.create(image='b.png')
UploadedImage.objects.create(image='/temp/media/b.png')
try:
UploadedImage.objects.create(image='/tmp/c.png')
except:
pass
#models.py
class UploadedImage(models.Model):
image = CloudinaryField('image', blank=True, null=True,
folder="media")
author = models.ForeignKey(
User, on_delete=models.CASCADE, null=True, blank=True
)
created_at = models.DateTimeField(auto_now_add=True)
token = models.CharField(max_length=256, null=True, blank=True)
### 自分で試したこと
色々なオプションを追加したり、たくさんのpathを入れてみました。
また、Cloudinaryを使うことでadminからは画像を保存することができるのですが
screenshotからどのように保存するのかをこの2日試し続けましたが質問させて頂きます。。。。。
何卒お手隙の方よろしくお願い申し上げます。
0