やりたいこと
Qiitaの[完全自動接続]Colaboratoryファイルのみで90分・12時間問題を解決した[Selenium使用]という記事を参照して、Google Colabを12時間以上使えるかテストをしようとしています。
その記事のこの章(#ソースコードまとめ
)にあるFile A
, File B
という物を使ってテストしようとしています。しかし以下のようなエラーが返ってきてしまい、解決できていません。
エラー内容
<ipython-input-3-8fcc19c55d88> in main(self) 202 else: 203 self.set_mode("GPU") --> 204 self.auto_access(self.access_path_2) 205 # 60分ごとにチェック 206 time.sleep(3600) <ipython-input-3-8fcc19c55d88> in auto_access(self, path) 128 cur_url = self.driver.current_url 129 print(cur_url) --> 130 self.click_change_runtime() 131 time.sleep(30) 132 <ipython-input-3-8fcc19c55d88> in click_change_runtime(self) 55 """ 56 # ランタイムクリック ---> 57 select_dropdown = WebDriverWait(self.driver, 20).until(EC.element_to_be_clickable((By.ID,"runtime-menu-button"))) 58 select_dropdown.click() 59 # ランタイムのタイプ変更クリック /usr/local/lib/python3.6/dist-packages/selenium/webdriver/support/wait.py in until(self, method, message) 78 if time.time() > end_time: 79 break ---> 80 raise TimeoutException(message, screen, stacktrace) 81 82 def until_not(self, method, message=''): TimeoutException: Message:
試したこと
- メイン関数の前にGitからリポジトリをクローンしていますが、これはUbuntu 18.04上でChromeを使ったときのUser Profileというものを保存している物です。しかしそのセルは問題なくクリアしていて、そこの問題はないように思います。(念の為Ubuntuもタグに入れておきます)
- かなり検索をしてみて、色々と試しました。
diff
1- select_dropdown = WebDriverWait(self.driver, 20).until(EC.element_to_be_clickable((By.ID,"runtime-menu-button"))) 2+ select_dropdown = WebDriverWait(self.driver, 200).until(EC.element_to_be_clickable((By.ID,"runtime-menu-button")))
のように時間を10倍にしても変わりませんでした。またIDが、記事の書かれた当時と変わっているんじゃないかとも思い確認していましたが、runtime-menu-button
で変更はありませんでした。その他、stackoverflowにあったwait = WebDriverWait(self.driver, 20)
としてみたりしましたが、うまくいきませんでした。
- Goofle Colabのランタイム(GPUかTPUかNoneか)などは、ipynbファイルを実行する前に決めておけばこの関数
click_change_runtime()
はいらないんじゃないかなとも思いましたが、「すべてのセルを実行する」というボタンをクリックするのには「ランタイム」というプルダウンをクリックしなければならないので、この関数が使われているところをコメントアウトするだけでは使い物にならないようでした。
何がいけないのでしょうか? よろしくお願いします。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。