現在pythonを独学中なのですが、任意のWEBページのログインを自動化しようと試みています。ページまでは飛べるようになったのですが、そこから[sign in]のボタンを押すとこでつまづいてしまいました。
また、コードではfind_element_by_xpathメソッドを使ったのですが毎回AttributeError: 'WebDriver' object has no attribute 'find_element_by_xpath'とエラーになってしまいます。以下にコードと参照しようとしているsign in ボタンのHTMLがわかる写真を添付しておりますので、御教授いただけたら嬉しいです。
from selenium import webdriver import time from bs4 import BeautifulSoup import pandas as pd CHROME = "/Users/kinseimisaki/Downloads/chromedriver 3" USER = "" PASS ="" browser = webdriver.Chrome(CHROME) #browser.implictily_wait(3) url = "https://sorare.com/" browser.get(url) time.sleep(3) print("ログインページにアクセスしました") #sorareの[sign in] をクリック elm_click = browser.find_element_by_xpath("//*[@id=""root""]/div/div[2]/div[1]/div[2]/header/div/div/div/div[2]/button[2]/span") time.sleep(3) elm_click.click() print("sign in を押しました")
Selenium 4.3.0 以降では find_element_by_* メソッドは廃止されました(deprecated)。なので、以下の様に書き換えると上手く行くかもしれません。
from selenium.webdriver.common.by import By
elm_click = browser.find_element(By.XPATH, ...)
ご回答ありがとうございます!
melian様のご指摘通りに入力した所、AttributeError: 'WebDriver' object has no attribute 'find_element_by_xpath'は表示されなくなったのですが、次にログインページアクセス後ターミナルに
Traceback (most recent call last):
File "/Users/kinseimisaki/Desktop/スクレイピング①/oi.py", line 24, in <module>
elm_click = browser.find_element(By.XPATH,"//*[@id=""root""]/div/div[2]/div[1]/div[2]/header/div/div/div/div[2]/button[2]/span")
File "/Users/kinseimisaki/opt/anaconda3/lib/python3.9/site-packages/selenium/webdriver/remote/webdriver.py", line 857, in find_element
return self.execute(Command.FIND_ELEMENT, {
File "/Users/kinseimisaki/opt/anaconda3/lib/python3.9/site-packages/selenium/webdriver/remote/webdriver.py", line 435, in execute
self.error_handler.check_response(response)
File "/Users/kinseimisaki/opt/anaconda3/lib/python3.9/site-packages/selenium/webdriver/remote/errorhandler.py", line 247, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id=root]/div/div[2]/div[1]/div[2]/header/div/div/div/div[2]/button[2]/span"}
(Session info: chrome=103.0.5060.114)
Stacktrace:
0 chromedriver 3 0x000000010d02c079 chromedriver 3 + 4444281
1 chromedriver 3 0x000000010cfb8403 chromedriver 3 + 3970051
2 chromedriver 3 0x000000010cc53038 chromedriver 3 + 409656
3 chromedriver 3 0x000000010cc892fd chromedriver 3 + 631549
4 chromedriver 3 0x000000010cc89581 chromedriver 3 + 632193
5 chromedriver 3 0x000000010ccbb4f4 chromedriver 3 + 836852
6 chromedriver 3 0x000000010cca67bd chromedriver 3 + 751549
7 chromedriver 3 0x000000010ccb9221 chromedriver 3 + 827937
8 chromedriver 3 0x000000010cca6683 chromedriver 3 + 751235
9 chromedriver 3 0x000000010cc7ca45 chromedriver 3 + 580165
10 chromedriver 3 0x000000010cc7da95 chromedriver 3 + 584341
11 chromedriver 3 0x000000010cffd55d chromedriver 3 + 4253021
12 chromedriver 3 0x000000010d0023a1 chromedriver 3 + 4273057
13 chromedriver 3 0x000000010d00716f chromedriver 3 + 4292975
14 chromedriver 3 0x000000010d002dea chromedriver 3 + 4275690
15 chromedriver 3 0x000000010cfdc54f chromedriver 3 + 4117839
16 chromedriver 3 0x000000010d01ced8 chromedriver 3 + 4382424
17 chromedriver 3 0x000000010d01d05f chromedriver 3 + 4382815
18 chromedriver 3 0x000000010d0338d5 chromedriver 3 + 4475093
19 libsystem_pthread.dylib 0x00007fff6dc9d109 _pthread_start + 148
20 libsystem_pthread.dylib 0x00007fff6dc98b8b thread_start + 15
という表示が出てきてしまいました。質問ばかりで大変申し訳ないのですが、このような表示が出た場合の処理の仕方をご存知でしたら教えていただけると幸いです!
@id=""root"" の部分がおかしいので、以下の様にして試してみて下さい。
elm_click = browser.find_element(By.XPATH, "//*[@id='root']/div/div[2]/div[1]/div[2]/header/div/div/div/div[2]/button[2]")
修正したら、正常に処理されました!!
ありがとうございます!!!
是非ベストアンサーにさせていただきたいので、何かしら回答欄にコメントを残していただけるとありがたいです!!よろしくお願いいたします!
ありがとうございます、回答へ転記しました。
回答1件
あなたの回答
tips
プレビュー