質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.35%
Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

Q&A

2回答

449閲覧

idのないaタグの要素をelmに格納し、クリックしたい。

meron_umashi

総合スコア0

Windows 10

Windows 10は、マイクロソフト社がリリースしたOSです。Modern UIを標準画面にした8.1から、10では再びデスクトップ主体に戻され、UIも変更されています。PCやスマホ、タブレットなど様々なデバイスに幅広く対応していることが特徴です。

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

selenium

Selenium(セレニウム)は、ブラウザをプログラムで作動させるフレームワークです。この原理を使うことにより、ブラウザのユーザーテストなどを自動化にすることができます。

0グッド

0クリップ

投稿2023/05/29 15:02

実現したいこと

webスクレイピングを初めたところで、初心者です。

aタグ要素を特定し、クリックしたいと思っています。
idがないので、文字列を検索して要素を特定して、クリックできると思ったのですが、エラーが出て選択、クリックができません。

elm=browser.find_element(By.PARTIAL_LINK_TEXT, "hokuriku")
elm.click()

前提

ここに質問の内容を詳しく書いてください。
(例)
TypeScriptで●●なシステムを作っています。
■■な機能を実装中に以下のエラーメッセージが発生しました。

発生している問題・エラーメッセージ

aタグの選択ができません。

該当のソースコード

<a href="https://m.recruit.co.jp/link/adptg_mid=22540&amp;adptg_lid=38" target="_blank" data-coupon-anchor-target="button-hokuriku"> <img class="is-pc" src="/theme/jalancouponfes/img/btn_coupon_hokuriku.png" alt="北陸のクーポン"> <img class="is-sp" src="/theme/jalancouponfes/img/sp/btn_coupon_hokuriku_sp.png" alt="北陸のクーポン"> </a>

試したこと

elm=browser.find_element(By.PARTIAL_LINK_TEXT, "hokuriku")
elm.click()
と記載してクリックできるかを試しましたが、できませんでした。

補足情報(FW/ツールのバージョンなど)

python seleniumu4

ここにより詳細な情報を記載してください。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meg_

2023/05/29 16:03

> エラーが出て選択、クリックができません。 エラーとは何でしょうか?
meron_umashi

2023/06/02 14:03

すみません。ご質問をいただいていたのを今気づきました。 エラーとは、.click()をしたときに、2023/05/31 21:31に記載したエラーがでるというものです。
guest

回答2

0

エラーとは、.click()をしたときに、2023/05/31 21:31に記載したエラーがでるというものです。

私がやりたかったことは、aタグやimgタグの要素を取得し、
elem=browser.find_element(By.XPATH, '//img[@alt="北陸のクーポン"]/..')
elem.click()
とすれば、リンク先にジャンプできると思っていたのですが、それができなくて困っています。

下記で出来るかと思います。

elem=browser.find_element(By.XPATH, '//img[@alt="北陸のクーポン"]/') elem.click()

別タブが開くのが嫌であれば下記でも良いかと思います。

elem=driver.find_element(By.XPATH, '//img[@alt="北陸のクーポン"]/..') driver.get(elem.get_attribute('href'))

投稿2023/06/03 00:17

編集2023/06/03 00:22
meg_

総合スコア10749

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

elm=browser.find_element(By.PARTIAL_LINK_TEXT, "hokuriku")

というのは、リンクテキストの部分一致なので、<a href="~~~">hokuriku coupon</a>のようなaタグにヒットします。

data-coupon-anchor-target属性で探すとすると、

Python

1find_element(By.XPATH, '//a[@data-coupon-anchor-target="button-hokuriku"]')

でしょうか。By.CSS_SELECTORでもできます。

私なら、日本語部分を使いそうです。

Python

1find_element(By.XPATH, '//img[@alt="北陸のクーポン"]/..')

投稿2023/05/29 15:34

otn

総合スコア85901

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

meron_umashi

2023/05/29 22:18

ありがとうございます。 elem = browser.find_element(By.XPATH, '//img[@alt="北陸のクーポン"]/..') 上記でエラーは出ませんでしたが、 elem.click() ができず、テキストを確認すると  elem.text  '' でした。原因が分かればご教授いただければ幸いです。
otn

2023/05/29 23:48

aタグの中(<a ~>と</a>の間)にはテキストは無いので、空文字列が表示されるのが正常です。 何をしたいのでしょうか?
meron_umashi

2023/05/30 12:40 編集

たびたび回答ありがとうございます。私自身、素人で大変申し訳ありません。 確かに、aタグの中にはテキストがないので、当然ということがわかりました。 私がやりたかったことは、aタグやimgタグの要素を取得し、  elem=browser.find_element(By.XPATH, '//img[@alt="北陸のクーポン"]/..')  elem.click() とすれば、リンク先にジャンプできると思っていたのですが、それができなくて困っています。 そもそも、上記要素に対して、クリックができないのでしょうか。 すみません、わかりにくい質問ですがご教授いただけますと幸いです。
otn

2023/05/30 14:26

elemにはaタグが入っているはずなのでclick()できます。 print(elem)とかで中味を確認したりはしていないのでしょうか? というか、elem.click()でエラーメッセージも出ないのですか?
meron_umashi

2023/05/30 22:44 編集

print(elem) <selenium.webdriver.remote.webelement.WebElement (session="05158e3da8cd2a0d9d4563d6f0e191bd", element="183411D8B039421C94B9474F657223D1_element_123")> -------------------------------------------------------------------- という打ち返しがあり、確かに入っています。.click()のエラーについては下記の通りでした。 -------------------------------------------------------------------- Traceback (most recent call last): File "C:/Users/abc/AppData/Local/Programs/Python/Python311/jaran05a.py", line 48, in <module> elem.click() File "C:\Users\abc\AppData\Local\Programs\Python\Python311\Lib\site-packages\selenium\webdriver\remote\webelement.py", line 94, in click self._execute(Command.CLICK_ELEMENT) File "C:\Users\abc\AppData\Local\Programs\Python\Python311\Lib\site-packages\selenium\webdriver\remote\webelement.py", line 403, in _execute return self._parent.execute(command, params) File "C:\Users\abc\AppData\Local\Programs\Python\Python311\Lib\site-packages\selenium\webdriver\remote\webdriver.py", line 440, in execute self.error_handler.check_response(response) File "C:\Users\abc\AppData\Local\Programs\Python\Python311\Lib\site-packages\selenium\webdriver\remote\errorhandler.py", line 245, in check_response raise exception_class(message, screen, stacktrace) selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable: element has zero size (Session info: chrome=113.0.5672.127) Stacktrace: Backtrace: GetHandleVerifier [0x00C18893+48451] (No symbol) [0x00BAB8A1] (No symbol) [0x00AB5058] (No symbol) [0x00AE1691] (No symbol) [0x00AD9AAC] (No symbol) [0x00AFA2BC] (No symbol) [0x00AD9586] (No symbol) [0x00AFA614] (No symbol) [0x00B0C482] (No symbol) [0x00AFA0B6] (No symbol) [0x00AD7E08] (No symbol) [0x00AD8F2D] GetHandleVerifier [0x00E78E3A+2540266] GetHandleVerifier [0x00EB8959+2801161] GetHandleVerifier [0x00EB295C+2776588] GetHandleVerifier [0x00CA2280+612144] (No symbol) [0x00BB4F6C] (No symbol) [0x00BB11D8] (No symbol) [0x00BB12BB] (No symbol) [0x00BA4857] BaseThreadInitThunk [0x75A500C9+25] RtlGetAppContainerNamedObjectPath [0x77527B4E+286] RtlGetAppContainerNamedObjectPath [0x77527B1E+238] -------------------------------------------------------------------- エラーメッセージが多くて、どこが重要かがわかりませんでしたので、すべて貼り付けさせていただきました。 よろしくお願いいたします。
otn

2023/05/30 23:35

> element not interactable: element has zero size ですね。意味はわかりますよね? これに対して心当たりはありませんか?クリックする時点のブラウザ画面に確かに表示されていますか?
meron_umashi

2023/05/31 12:31

毎々、ご返答ありがとうございます。 ブラウザ画面に表示されていなくても(画面スクロールしていなくても)大丈夫だと思っていました。 と思い、表示しているアイコン部分までスクロールして、同様にclick()をコマンド入力しましたが、同様のエラー表示が出ました。 具体的には、じゃらんという旅行サイト(下記のurl)の下方にある「北陸のクーポン」という青の画像をクリックして、他のページに飛びたいのですが、エラーがでる状況です。 https://www.jalan.net/theme/jalancouponfes/?ctm=n27_912&dspn=a0a1xeR9Pd9xY4i4eF9RQlg0CEVhDIYUFXR6J_c7hoIux8g7yBOmTCdSKrRF5pB6czK7aXBGM7p-G5ndNqZ7Rf_vQbvBrzMu-CEoyJb2Hus 何度もご回答いただいており、非常に厚かましいですが、ご教授いただけると大変助かります。 以上、よろしくお願いします。
otn

2023/05/31 13:41

ちょっとこのエラーは経験が無いので、ググって出てくる情報以上のアドバイスは出来ないです。
meron_umashi

2023/05/31 22:19

いろいろとアドバイスありがとうございました。 引き続き、勉強していきたいと思います。
otn

2023/06/03 02:35

別の方の回答通り、クリックするのが目的でなく、ページ遷移が目的なら、aタグのhref属性を取ってgetで遷移すれば良いですね。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

まだベストアンサーが選ばれていません

会員登録して回答してみよう

アカウントをお持ちの方は

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問