回答編集履歴
2
別の回答方法を見つけたため
answer
CHANGED
@@ -1,13 +1,12 @@
|
|
1
|
-
|
1
|
+
selectorsに格納している要素は、id="label"で取得してきていますが、これはチェックボックスの横のspanタグの要素になります。ですから、この要素をクリックしてもチェックボックスはクリックされません(チェックボックスはinputタグです)。
|
2
|
-
|
2
|
+
ただ、チェックボックスとなるinputタグの要素は、spanタグと親要素を同じにしていますので、`find_element_by_xpath('../input')`によって一度、親要素に上がってから、inputタグに降りてくることで、チェックボックスたる要素を取得できると思います。
|
3
3
|
|
4
|
-
|
4
|
+
(下には、該当部分しか記載していませんが、当該ページに入ってから多少のwaitなりsleepを入れる必要があると思います。また、当初、全く別の回答を記載していましたが、より質問者のコードに近い方法がありましたので、そちらに大きく修正をしました。申し訳ありません)
|
5
5
|
|
6
6
|
```Python
|
7
|
-
|
7
|
+
for i in selectors:
|
8
|
+
selectors_str.append(i.text)
|
8
|
-
|
9
|
+
if i.text == "テニス(屋外)" or i.text == "軟式野球" or i.text == "ソフトボール" :
|
9
|
-
# ソフトボールをクリック
|
10
|
-
|
10
|
+
j = i.find_element_by_xpath('../input')
|
11
|
-
|
11
|
+
j.click()
|
12
|
-
driver.find_element_by_name('layoutChildBody:childForm:purposeSearchItems:0:selectItemsItems:1:selectItems:0:checked').click()
|
13
12
|
```
|
1
情報の追加
answer
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
「テニス」などの文字列を使っているわけではありませんが、、
|
2
2
|
それぞれのチェックボックスのinputタグには固有のnameが振られていますので、`find_element_by_name()`を使うのはどうでしょうか。
|
3
3
|
|
4
|
+
なお、id="label"で取得できるエレメントは、チェックボックスの横にあるspanタグなので、そこをクリックしてもチェックボックスをクリックできません(チェックボックスはinputタグ)。
|
5
|
+
|
4
6
|
```Python
|
5
7
|
# 軟式野球をクリック
|
6
8
|
driver.find_element_by_name('layoutChildBody:childForm:purposeSearchItems:0:selectItemsItems:0:selectItems:0:checked').click()
|