前提・実現したいこと
GoogleのCloud Functions でSeleniumを動かしています。
ブラウザはheadless-chromeです。
アクセスした画面に「ダウンロード」ボタンがあり、これを押下するとファイルがダウンロードされます。
現在、ダウンロードボタンの押下までは出来ていますが、ダウンロードしたそのファイルを使おうとすると、ファイルバスの指定が間違っているというエラーになっています。
ファイル名はデフォルトで設定される固定値のため、ファイル名によるエラーよりもファイルの場所の指定が異なっていると思われます。
このエラーを解消したいです。
ローカル環境
macOS Monterey 12.2.1
Cloud Functions環境
ランタイム:Python 3.9.9
発生している問題・エラーメッセージ
FileNotFoundError: [Errno 2] No such file or directory: '/xxxxxxx'
該当のソースコード
python
1 2# ファイルパス、ファイル名の指定 3dl_path = '/workspace/tmp/download/' 4file_path = dl_path + 'XXX.csv' 5 6# ブラウザの立ち上げ 7def launch_browser(request): 8 chrome_options = webdriver.ChromeOptions() 9 chrome_options.add_argument('--headless') 10 chrome_options.add_argument('--disable-gpu') 11 chrome_options.add_argument('--window-size=1280x1696') 12 chrome_options.add_argument('--no-sandbox') 13 chrome_options.add_argument('--hide-scrollbars') 14 chrome_options.add_argument('--enable-logging') 15 chrome_options.add_argument('--log-level=0') 16 chrome_options.add_argument('--v=99') 17 chrome_options.add_argument('--single-process') 18 chrome_options.add_argument('--ignore-certificate-errors') 19 chrome_options.add_argument('user-agent='+UserAgent().random) 20 chrome_options.binary_location = os.getcwd() + "/bin/headless-chromium" 21 chrome_options.add_experimental_option("prefs", { 22 "download.default_directory":dl_path, 23 }) 24 25 browser = webdriver.Chrome( 26 os.getcwd() + "/bin/chromedriver", chrome_options=chrome_options) 27 browser.command_executor._commands["send_command"] = ( 28 'POST', 29 '/session/$sessionId/chromium/send_command' 30 ) 31 browser.execute( 32 "send_command", 33 params={ 34 'cmd': 'Page.setDownloadBehavior', 35 'params': { 'behavior': 'allow', 'downloadPath': dl_path } 36 }) 37 try: 38 browser.get(BASE_URL) 39 sleep(3) 40 message = 'アクセスしました。:{}'.format(BASE_URL) 41 return browser 42 43 except: 44 import traceback 45 print('ブラウザの起動に失敗しました。') 46 traceback.print_exc() 47 browser.quit() 48 49 50############ 中略 ############### 51 52 53 54def set_dataframe(browser, file_path): 55 56 # テスト用に記述 57 import subprocess 58 print(subprocess.check_output('pwd')) 59 60 df = pd.read_csv(file_path) # <==ここでエラー 61 62 以下省略
試したこと
上記のようにPWDコマンドを実行すると'/workspace'
と返ってきます。
これをファイルパスとして指定しても同様のエラーでした。
なにかヒントだけでも得られればと大変助かります。
よろしくお願いいたします。
あなたの回答
tips
プレビュー