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

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

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

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

selenium

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

Q&A

解決済

1回答

2435閲覧

selenium webdriver(ruby)で、固有の情報がある場所と同じ場所にあるボタンをクリックしたい。

situmon_sya

総合スコア14

Ruby

Rubyはプログラミング言語のひとつで、オープンソース、オブジェクト指向のプログラミング開発に対応しています。

selenium

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

0グッド

0クリップ

投稿2017/07/14 14:22

編集2017/07/17 03:57

selenium webdriver(ruby)で、特定の文字列があるフォームを探してクリックしたいです。
操作したいウェブサイトは下記のようにtableタグで構成されています。

文字列ボタン
aaa[submit]
bbb[submit]
ccc[submit]

各行がフォームになっていて、submitのリンク先やnameは全て同じです。
文字列の値を渡して、それでsubmitの移動先の動作が変わります。
(実際には値の渡し方は<input type="hidden" name="str" value=aaa>みたいな感じです)

これで[bbb]を探してそのsubmitをクリックするにはどうしたらいいですか?
ちなみにbbbが必ず上から3番目の列にいるとは限りません。

jqueryのセレクタみたいな事が事が出来れば簡単だとは思うのですが・・・

ソースを追加しました。(よそ様のソースなので、一応修正してます。)

html

1<table> 2 <tr> 3 <th nowrap>NO</th> 4 <th nowrap>製品</th> 5 <th nowrap></th> 6 </tr> 7<tr> 8 9<tr> 10 <td>2</td> 11 <td nowrap><a target="_blank" href="./detail.html">product_name</a></td> 12 <form method="POST" action="./disp.cgi"> 13 <input type="hidden" name="_product_id" value="3.8"> 14 <td nowrap> 15 <input type="submit" name="_next" value="OK"> 16 </td> 17 </form> 18</tr>

product_name、もしくは特定の_product_idのvalueを持つinputを探して、submitを押したいです。

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

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

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

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

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

suama

2017/07/16 13:24

selenium-webdriverでもcssセレクタで要素を特定できますので、もう少し具体的にHTMLの例を書いていただけるといいかなと思います。submitがターゲットのinputのすぐ隣なのかとかがわかるとできるかな?とも思いましたので。
guest

回答1

0

ベストアンサー

こんにちは、ソースの例ありがとうございます。

<tr>...</tr>の各行に1つずつFormと対応するSubmitボタンがある感じですね。

cssとかxpathが使えると思うのですが、もし例のようなHTMLだと、
「bbbという値を持つinputの後に出て来るtdタグの子要素でsubmitのもの」を抽出してclick、というのでどうでしょうか。

element = @driver.find_element(:css, "input[value='bbb'] ~ td input[type='submit']”) element.click

投稿2017/07/17 06:31

suama

総合スコア1997

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

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

situmon_sya

2017/07/21 08:28

回答ありがとうございます。 頂いた内容ではうまく動きませんでした(自分の例示がおかしかっただけかも) 結局trタグでループをかけて、trの中のtextを見て、合致したらtrの子のsubmitを実行する、という力技で実現しました。 cssセレクタの使い方をもうちょっと理解しないといけないっぽいです。 ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問