##実現したいこと
スクレイピングで下の方に表示されている「次へ」ボタンをクリックするためにmove_to_element
を使用し
1ページだけ遷移してアドレスを取得しようとしています。
Python
1def main(): 2 3 from selenium import webdriver 4 from selenium.webdriver.chrome.options import Options 5 6 from selenium.webdriver.support import expected_conditions as EC 7 from selenium.webdriver.common.by import By 8 from selenium.webdriver.support.ui import WebDriverWait 9 from selenium.webdriver.common.action_chains import ActionChains 10 11 12 options = Options() 13 options.add_argument('--headless') 14 browser = webdriver.Chrome(executable_path='/Users/User/Desktop/Tool/chromedriver', chrome_options=options) 15 16 browser.implicitly_wait(5) 17 url_login = "https://teratail.com/" 18 browser.get(url_login) 19 20 # 次へ移動 21 element= browser.find_element_by_xpath("//*[@id=\"mainContainer\"]/div[10]/div/p/a") 22 actions = ActionChains(browser) 23 actions.move_to_element(element) 24 actions.perform() 25 26 element = WebDriverWait(browser,10).until(EC.invisibility_of_element_located((By.XPATH, "//*[@id=\"mainContainer\"]/div[10]/div/p/a"))) 27 28 browser.execute_script('arguments[0].click();', element) 29 30 print(browser.current_url) 31 32 browser.quit() 33 34if __name__ == "__main__": 35 main()
##エラー
以下が表示されて遷移が行われません。
そもそも画面が動けていないようなのですが、(headlessを外して確認しました)
他に方法ありますでしょうか。
Python
1NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="mainContainer"]/div[10]/div/p/a"} 2
##試したこと
試しに要素を変更してタブの//*[@id=\"tab\"]/li[6]/p/span
を指定すると、
画面は動くのですが、遷移はせずにスクリプトが終わり
TimeoutException
になってしまいます。Timeout時間を60に伸ばしても同じです。
ご意見いただけると幸いです。
回答2件
あなたの回答
tips
プレビュー