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

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

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

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

Q&A

解決済

2回答

11607閲覧

seleniumでロードするたびにidが変わる要素をクリックしたい

og33

総合スコア14

selenium

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

0グッド

1クリップ

投稿2019/01/16 00:27

編集2019/01/16 01:25

やりたいこと

  • seleniumで画像の要素をクリックしたい

イメージ説明

問題

  • クリックしたい要素のxpathは「//*[@id="ember3224"]/label[7]」と取得できたが、idの「3224」の部分は画面をロードするたびに変更される
  • クリックしたい要素が他の要素と同じクラスを持っているため、クラスで指定することはできない
  • クリックしたい要素が唯一ユニークなのは「is unknown」の文字だけ

試したこと

  • 「is unknown」の文字をクリックするために以下のコードを実行するとエラーが出る
driver.find_element_by_xpath(".//span[contains(text(), 'is unknown')]").click()
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"xpath","selector":".//span[contains(text(), 'is unknown')]"}

要素が見つからないとのことです。。

お知恵をお貸しください。よろしくお願いします。

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

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

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

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

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

reraNine

2019/01/16 00:38

該当のURLをご提示いただく事は可能でしょうか
og33

2019/01/16 01:01

ありがとうございます。 こちらはユーザー登録を行わないと閲覧できないページとなっております。 https://app.intercom.io/a/apps/アプリコード/users/segments/all-users もし、ご覧になりたい情報がございましたら要素をコピーしてくる等の対応をいたしますので、お申し付けください。
guest

回答2

0

方向性はいいと思います。
ただ、Selenium Driverのメソッドで contains(text(), 'is unknown') といったXpathを指定してもChromeほど賢くないのでエラーとなってしまいますね。
別途HTMLを解析するライブラリを使って要素の情報を取得してクリックさせればいいと思います。
RubyであればNokogiriで簡単に出来るのですが、PythonだとBeautiful Soupで出来たはずです。

投稿2019/01/16 09:37

hotu_ta

総合スコア114

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

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

0

ベストアンサー

回答でありませんが、
私でしたら、xpathの別指定で固定化できないか検証します。
「@id="ember3224"の8番目のラベルの位置」と指定して、idが変動するのであれば、
「@id="xxx"の3番目にあるid「ember」の8番目のラベルの位置」といった
xpath(いわゆる座標指定)をもう1段上のDOM要素から起点として
固定化できる座標が無いかを無いなら更にもう1段、、、考察した方が良さそうです。

といっても具体的なxpathの指定方法は、申し訳ありませんが私は理解しておりません、、
GoogleChromeの拡張機能に
Katalon Recoaderなるマウス操作で一連の動作を記録しするソフトウェアが存在します。
記録した際に動作をソースコードで出力する機能が存在するので、
一連の操作を記録し、WebElementをどの様に記載しているか確認し、
そのまま使えそうでしたら,その方法を使用する方法を提案させていただきます。
https://chrome.google.com/webstore/detail/katalon-recorder/ljdobmomdgdljniojadhoplhkpialdid

(ご要望のページは、試用期間があるものの、クレジットカード番号を入力する必要があるので、
こちらで確認はしない方向にてお願いできればと思います。。)

投稿2019/01/16 07:40

reraNine

総合スコア124

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問