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

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

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

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

selenium

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

Q&A

解決済

1回答

8746閲覧

selenium buttonクリックの方法について

john_doe_

総合スコア354

Python 3.x

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

selenium

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

0グッド

0クリップ

投稿2019/11/30 00:30

編集2019/11/30 00:31

下記のようなサイト構造で、2番目のボタンをクリックしたいのですが、
xpathを利用せずに実行したいと考えています。

イメージ説明

# 下記で実行できることは確認済み driver.find_element_by_xpath('//*[@id="root"]/div[4]/div[2]/div/div[2]/div[2]/div[2]/div/button[2]').click() # class等の属性を指定して実行したい # 下記でも実行できるが、属性が乱数で変化するので不適切 driver.find_element_by_class_name('dVGJTN').click() # 下記が良さそう elem = driver.find_element_by_class_name('sc-fATqzn') elem.find_elements_by_tag_name('button')[1].click()

他に適切な記述方法がございましたら、ご教示いただきたく存じます。
何卒よろしくお願い申し上げます。

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

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

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

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

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

guest

回答1

0

ベストアンサー

下記が良さそう
elem = driver.find_element_by_class_name('sc-fATqzn')
elem.find_elements_by_tag_name('button')[1].click()

これは

elem = driver.find_element_by_class_name('sc-fATqzn')

ココがダメです。
理由はすぐわかると思います。


このDOM全体でのbuttunタグに対して、クリックしたいDOMが何番目であるか毎回固定ならば、

python

1driver.find_elements_by_tag_bame('button')[i].click()

でいけます。iには何番目であるか数値を入れてください。
1番目ならiは0、2番目ならiは1 ...となります。

何番目であるかは開発者ツールのConsoleに

Javascript

1document.getElementsByTagName('button')

と入力してやればおのずとわかると思います。


この順番が固定でないのならば長ったらしいxpathを使うほかありません。

投稿2019/11/30 06:05

shirai

総合スコア1290

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

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

john_doe_

2019/11/30 13:52

お返事いただきましてありがとうございます。 'button'tagが115個存在していました。 ご教示いただいたようにtagを指定してclickすることができました。 driver.find_elements_by_tag_name('button')[114].click()
shirai

2019/11/30 14:36

115という値は検索結果によっては不確かな値の可能性があります。 ですが確定で1番最後に来るのなら[]内の数値を-1にするといいです。 確実に最後尾の要素をとらえてくれます。
john_doe_

2019/11/30 14:42

お返事いただきましてありがとうございます。 この場合も[-1]で1番最後のという意味で利用できるのですね。 大変勉強になりました。誠にありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問