回答編集履歴

2

別の回答方法を見つけたため

2020/01/02 12:25

投稿

frederick_1974
frederick_1974

スコア303

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

1

情報の追加

2020/01/02 12:25

投稿

frederick_1974
frederick_1974

スコア303

test CHANGED
@@ -1,6 +1,10 @@
1
1
  「テニス」などの文字列を使っているわけではありませんが、、
2
2
 
3
3
  それぞれのチェックボックスのinputタグには固有のnameが振られていますので、`find_element_by_name()`を使うのはどうでしょうか。
4
+
5
+
6
+
7
+ なお、id="label"で取得できるエレメントは、チェックボックスの横にあるspanタグなので、そこをクリックしてもチェックボックスをクリックできません(チェックボックスはinputタグ)。
4
8
 
5
9
 
6
10