アプリ版:「スタンプのみでお礼する」機能のリリースについて

seleniumbasicについてご質問です。

clromeのあるページのラジオボタンをクリックしたいのですが
ある下記コードの数字部分が変化するのでエラーになってしまいます。
Dim driver As New Selenium.WebDriver

driver.SetCapability "debuggerAddress", "127.0.0.1:9222"

driver.Start "Chrome"

'訪問予定クリック
ここ↓
driver.FindElementByCss("#ReapirViewEdit > div > div:nth-child(22) > div.row.col_margin_t.form-group.area_add_option_type > div:nth-child(1)").Click

copy elementで貼り付けるとdiv:nth-child(22) の(22)部分がその時その時で可変し(22)意外だとエラーになって開けません。

(22)の部分が変わっても常に訪問予定のラジオボタンをエラーが出ずに
クリックできるコードを教えていただけないでしょうか?

ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー

<div class="col-sm-2 w_158">
<input id="form_option_visit" name="add_option_type" value="1" type="radio"> <label class="col_margin_l40" for="form_option_visit">訪問予定</label> </div>


<input id="form_option_visit" name="add_option_type" value="1" type="radio">


<label class="col_margin_l40" for="form_option_visit">訪問予定</label>

::before
”訪問予定"
::after
</label>

</div>


よろしくお願いいたします。

A 回答 (1件)

こんにちは



Seleniumは存じませんけれど、セレクタの問題のようですので・・

>(22)部分がその時その時で可変し(22)意外だとエラーになって開けません。
順番で特定できないのなら、何を持って特定するのか(ご質問文には記述がないので)わかりません。

雰囲気的に、ご質問文の下部にあるHTMLがクリックしたいラジオボタンのようですが、idが振られているようなので、直接idで指定すればよさそうに思いますけれど・・
それとも、idそのものも変わってしまうのでしょうか?

とは言え、ご提示のHTMLだと、同じidが複数個所にあるようなので、もとのHTML自体が文法に合っているのかどうかも疑問ですね。
(文法に合っていないのなら、それなりの特定方法を考える必要がある)
その際のSeleniumの挙動もわかりませんけれど、複数系でサーチすれば、多分リストを返すのではないかと想像しますので、そちらの順番でよいのか悪いのか・・
(質問者様が、何をクリックしたいのか不明なので)


要は、質問者様が「何を持ってクリックしたい要素を特定しているのか」に従って、それに沿った方法を取れば良いものと思われます。
例えば「訪問予定というテキストを持っているLabel要素」が一意なのなら、Label要素をまとめて取得しておいて、ループ等でそのtextを走査して該当要素を特定するとか。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!