前提・実現したいこと
tumblrというSNSを利用しています.スキ!というお気に入りのようなものを保存しておくために
リブログ(twitterでいうリツイートのようなもの)をしようと思ったのですが,
数が膨大だったため,python,seleniumにて自動化をしようと考えました.
ログイン→スキ!投稿一覧ページ→リブログボタンクリック→投稿先設定→リブログ
というステップを踏みたいのですが,リブログボタンをクリックして新しいページを新規タブで開くと
pythonでもjsでも途端に要素が見つかりませんと出てしまいます.
どこが原因なのか教えていただけないでしょうか.
まだ1投稿をリブログできていないため,繰り返しの実装はまだです.
発生している問題・エラーメッセージ
selenium.common.exceptions.JavascriptException: Message: javascript error: Cannot read property 'click' of undefined
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":".tumblelog-select "}
新規ページの再取得はできていることから,タブのスイッチングまではうまくいっているものと思い,その後の要素取得が原因かなと考えています.
該当のソースコード
python
1# coding:utf-8 2from selenium import webdriver 3from selenium.webdriver.common.keys import Keys 4import time 5 6driver = webdriver.Chrome(executable_path='ドライバーのパス') 7 8driver.get("tumblrのURL") 9time.sleep(3) 10 11driver.maximize_window() 12time.sleep(3) 13 14login_id = driver.find_element_by_name("email") 15login_id.send_keys("メールアドレス") 16cmd = "document.querySelector(\"[aria-label='次へ']\").click();" 17driver.execute_script(cmd) 18time.sleep(3) 19 20next_btn = driver.find_element_by_name("password") 21next_btn.send_keys("パスワード") 22cmd = "document.querySelector(\"[aria-label='ログイン']\").click();" 23driver.execute_script(cmd) 24time.sleep(5) 25driver.get("https://www.tumblr.com/likes") 26time.sleep(3) 27 28cmd = "document.querySelector(\"[aria-label='グリッドで表示']\").click();" 29driver.execute_script(cmd) 30time.sleep(3) 31 32cmd = "document.getElementsByClassName(\"CMh87\")[0].click();" 33driver.execute_script(cmd) 34time.sleep(3) 35 36cmd = "window.open(document.querySelector(\"[aria-label='リブログ']\").href, '_blank');" 37driver.execute_script(cmd) 38time.sleep(5) 39 40handle_array = driver.window_handles 41time.sleep(3) 42 43driver.switch_to.window(handle_array[-1]) 44time.sleep(3) 45 46print(driver.page_source) 47 48driver.get(driver.current_url) 49time.sleep(5) 50 51reblog_btn = driver.find_element_by_class_name("tumblelog-select ") 52reblog_btn[0].click() 53# cmd = "document.getElementsByClassName(\"tumblelog-select \")[0].click();" 54# driver.execute_script(cmd) 55time.sleep(3) 56 57cmd = "document.querySelector(\"[aria-label='chacopen55']\").click();" 58driver.execute_script(cmd) 59time.sleep(3) 60 61cmd = "document.querySelector(\"[aria-label='xPAJL']\").click();" 62driver.execute_script(cmd) 63time.sleep(3)
エラーが出るのは
reblog_btn~~
の行からです.
試したこと
・chromeのデベロッパーツールではリブログページを開いた上で,jsでリブログまでおこなうことができました.
・ページ遷移後の停止時間の調整
補足情報(FW/ツールのバージョンなど)
Macbook pro 2018
python 3.9.2
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/03/17 08:16