teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

2

iframe の中を探すように修正

2019/06/30 12:46

投稿

nunukim
nunukim

スコア135

answer CHANGED
@@ -12,4 +12,29 @@
12
12
  element1 = driver.find_element_by_name('formAddrW')
13
13
  element2 = element1.find_element_by_name('keyword')
14
14
  ```
15
- とすることで動作するかと思います。
15
+ とすることで動作するかと思います。
16
+
17
+ # コメントを受けて追記
18
+
19
+ 探しているform (element1) がiframe の中に存在しているため、iframe の中を探すようにしなければなりませんでした。
20
+
21
+ 以下で動作することを確認しました。
22
+
23
+ ``` python
24
+ import time
25
+ from selenium import webdriver
26
+
27
+ driver = webdriver.Chrome()
28
+ driver.get('https://www.sej.co.jp/shop/')
29
+ time.sleep(5)
30
+
31
+ # iframe の中にフォーカスを切り替える
32
+ iframe = driver.find_element_by_css_selector('iframe[src="//www.e-map.ne.jp/p/711map/?p_s1=40000"]')
33
+ driver.switch_to_frame(iframe)
34
+
35
+ element1 = driver.find_element_by_name('formAddrW')
36
+ element2 = element1.find_element_by_name('keyword')
37
+ element2.send_keys('豊島区')
38
+ element2.submit()
39
+
40
+ ```

1

element1 のクエリも変更

2019/06/30 12:46

投稿

nunukim
nunukim

スコア135

answer CHANGED
@@ -1,6 +1,15 @@
1
+ ※修正しました
2
+
1
3
  ![イメージ説明](ddea81f13a3b18f1bef4f78958d0cc88.png)
4
+
5
+ 該当箇所の html を上図に載せています。
6
+
2
- 当該箇所のクラス名`keyword` ではなく、 `searchFW` ですので(上図)
7
+ `element1` は、クラス名(`class` 属性)ではなく、 `name` 属性 が`formAddrW` ですので、
8
+ `find_element_by_class_name` ではなく、 `find_element_by_name` を使います。
9
+ `element2` も同様に、クラス名ではなく、 `name` 属性が `keyword` ですので、`find_element_by_name` を使います。
10
+
3
11
  ```python
12
+ element1 = driver.find_element_by_name('formAddrW')
4
- element2 = element1.find_element_by_class_name('searchFW')
13
+ element2 = element1.find_element_by_name('keyword')
5
14
  ```
6
15
  とすることで動作するかと思います。