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

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

新規登録して質問してみよう
ただいま回答率
85.48%
SVG

SVGは、XMLを基盤とした2Dベクター画像記述言語。画像を線・面といった図形の集合体として扱うベクター画像のため、環境に適した表示が可能です。アニメーション機能もサポートされており、簡単なインタラクティブコンテンツ作成もできます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

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

Q&A

解決済

1回答

1122閲覧

区別のないSVGをSeleniumで取得したい

H-JP

総合スコア3

SVG

SVGは、XMLを基盤とした2Dベクター画像記述言語。画像を線・面といった図形の集合体として扱うベクター画像のため、環境に適した表示が可能です。アニメーション機能もサポートされており、簡単なインタラクティブコンテンツ作成もできます。

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

selenium

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

0グッド

0クリップ

投稿2023/01/07 13:04

前提

pythonでseleniumを使い、自動でサイトのボタンを押したいのですが(https://porty.co.jp/assess/)
このサイトのボタンは全て同じsvgになっていて取得しようと思ってもどう区別して取得するのかが分かりません。XPATHで取得しようと試みたのですがこれもエラーが出てできませんでした。取得する方法がどう調べても出てこないので教えて頂きたいです。

実現したいこと

svgのボタンをエレメントとして取得したい

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

① NoSuchElementException Traceback (most recent call last) Input In [7], in <cell line: 1>() ----> 1 elem_walk = browser.find_element(By.XPATH, '//*[@id="__next"]/div/main/div[3]/div/form/div[2]/div[2]/svg[2]') File ~\anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py:861, in WebDriver.find_element(self, by, value) 858 by = By.CSS_SELECTOR 859 value = '[name="%s"]' % value --> 861 return self.execute(Command.FIND_ELEMENT, {"using": by, "value": value})["value"] File ~\anaconda3\lib\site-packages\selenium\webdriver\remote\webdriver.py:444, in WebDriver.execute(self, driver_command, params) 442 response = self.command_executor.execute(driver_command, params) 443 if response: --> 444 self.error_handler.check_response(response) 445 response["value"] = self._unwrap_value(response.get("value", None)) 446 return response File ~\anaconda3\lib\site-packages\selenium\webdriver\remote\errorhandler.py:249, in ErrorHandler.check_response(self, response) 247 alert_text = value["alert"].get("text") 248 raise exception_class(message, screen, stacktrace, alert_text) # type: ignore[call-arg] # mypy is not smart enough here --> 249 raise exception_class(message, screen, stacktrace) NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":"//*[@id="__next"]/div/main/div[3]/div/form/div[2]/div[2]/svg[2]"} (Session info: chrome=108.0.5359.125) Stacktrace: Backtrace: (No symbol) [0x00ABF243] (No symbol) [0x00A47FD1] (No symbol) [0x0093D04D] (No symbol) [0x0096C0B0] (No symbol) [0x0096C22B] (No symbol) [0x0099E612] (No symbol) [0x009885D4] (No symbol) [0x0099C9EB] (No symbol) [0x00988386] (No symbol) [0x0096163C] (No symbol) [0x0096269D] GetHandleVerifier [0x00D59A22+2655074] GetHandleVerifier [0x00D4CA24+2601828] GetHandleVerifier [0x00B68C0A+619850] GetHandleVerifier [0x00B67830+614768] (No symbol) [0x00A505FC] (No symbol) [0x00A55968] (No symbol) [0x00A55A55] (No symbol) [0x00A6051B] BaseThreadInitThunk [0x76636BD9+25] RtlGetFullPathName_UEx [0x771D8FD2+1218] RtlGetFullPathName_UEx [0x771D8F9D+1165]

該当のソースコード

python

1①XPATHで取得(エラー) 2elem_walk = browser.find_element(By.XPATH, "//*[@id="__next"]/div/main/div[3]/div/form/div[2]/div[2]/svg[2]") 3 4②CSSセレクタで取得(成功しますが1つのボタンしか指定できない) 5elem_walk = browser.find_element(By.CSS_SELECTOR, 'div > svg:nth-of-type(2)')

試したこと

①XPATHで取得(エラー)
②CSSセレクタで取得(成功しますが1つのボタンしか指定できない)

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

GoogleChromeドライバのバージョン108.0.5359.71
GoogleChromeのバージョン→108.0.5359.125
開発環境→JupyterNotebook(6.4.8)/Python 3 (ipykernel)

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

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

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

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

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

melian

2023/01/07 15:26

nth-of-type(i) をカンマで繋いて指定するとよいかもしれません。この場合は find_elements を使います。 elem_walk = browser.find_elements(By.CSS_SELECTOR, 'div > svg:nth-of-type(2), svg:nth-of-type(3)')
H-JP

2023/01/08 22:45

elementsだと単一のelementでないためクリック操作をしようとすると'list' object has no attribute 'click'とエラーが出てしまうのですがこちらはどう解決すればよいでしょうか、教えて頂けると幸いです。
H-JP

2023/01/08 22:50

すみませんこちらは少し考えたら解決しました、これで作業が進みそうです。ご協力ありがとうございました!
jbpb0

2023/01/09 12:00

> 少し考えたら解決しました 質問を「解決済」にしてください
guest

回答1

0

自己解決

解決済み(回答は質問へのコメント欄にあります)

投稿2023/01/10 17:38

H-JP

総合スコア3

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問