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

質問編集履歴

5

workaroundの誤記修正

2020/05/24 11:00

投稿

ji-desuji
ji-desuji

スコア11

title CHANGED
File without changes
body CHANGED
@@ -120,10 +120,10 @@
120
120
  ```
121
121
 
122
122
  ### Workaroundのソースコード
123
- 賢い方法ではないですが、下記方法にて何とか処理を進めることができそうです
123
+ 賢い方法ではないですが、下記方法にて何とか処理を進めることができました
124
124
  20回実行し、10回1回目OK、10回2回目でOK。
125
- なぜか、tryで処理を進めたところ、成功率が上がりました。
125
+ なぜか、tryで処理を入れたところ、成功率が上がりました。
126
- 念のため、5回tryしています。
126
+ 絶対に失敗したくないので、念のため、5回tryしています。
127
127
  ```python
128
128
  driver.switch_to.frame(driver.find_element_by_id('iframeのid'))
129
129
  try:

4

workaroud追加

2020/05/24 11:00

投稿

ji-desuji
ji-desuji

スコア11

title CHANGED
File without changes
body CHANGED
@@ -119,7 +119,56 @@
119
119
  time.sleep(2)
120
120
  ```
121
121
 
122
+ ### Workaroundのソースコード
123
+ 賢い方法ではないですが、下記方法にて何とか処理を進めることができそうです。
124
+ 20回実行し、10回1回目OK、10回2回目でOK。
125
+ なぜか、tryで処理を進めたところ、成功率が上がりました。
126
+ 念のため、5回tryしています。
127
+ ```python
128
+ driver.switch_to.frame(driver.find_element_by_id('iframeのid'))
129
+ try:
130
+ print('1回目')
131
+ driver.find_element_by_name('buttonのname').click()
132
+ except:
133
+ try:
134
+ time.sleep(1)
135
+ driver.refresh()
136
+ time.sleep(2)
137
+ print('2回目')
138
+ driver.switch_to.frame(driver.find_element_by_id('iframeのid'))
139
+ driver.find_element_by_name('buttonのname').click()
140
+ except:
141
+ try:
142
+ time.sleep(1)
143
+ driver.refresh()
144
+ time.sleep(2)
145
+ print('3回目')
146
+ driver.switch_to.frame(driver.find_element_by_id('iframeのid'))
147
+ driver.find_element_by_name('buttonのname').click()
148
+ except:
149
+ try:
150
+ time.sleep(1)
151
+ driver.refresh()
152
+ time.sleep(2)
153
+ print('4回目')
154
+ driver.switch_to.frame(driver.find_element_by_id('iframeのid'))
155
+ driver.find_element_by_name('buttonのname').click()
156
+ except:
157
+ try:
158
+ time.sleep(1)
159
+ driver.refresh()
160
+ time.sleep(2)
161
+ print('5回目')
162
+ driver.switch_to.frame(driver.find_element_by_id('iframeのid'))
163
+ driver.find_element_by_name('buttonのname').click()
164
+ except:
165
+ print('NG')
122
166
 
167
+
168
+ driver.switch_to.window(driver.window_handles[-1])#新しいウィンドウを有効にする
169
+ time.sleep(2)
170
+ ```
171
+
123
172
  ### 補足情報(FW/ツールのバージョンなど)
124
173
 
125
174
  Python 3.8

3

試したこと追記

2020/05/24 10:59

投稿

ji-desuji
ji-desuji

スコア11

title CHANGED
File without changes
body CHANGED
@@ -99,7 +99,27 @@
99
99
  time.sleep(2)
100
100
  ```
101
101
 
102
+ switchの後で、コード出力すると、iFrame内のコードが表示される
103
+ ただし、switchに成功するまで確認する必要あり。
104
+ ```python
105
+ target = driver.find_element_by_id('iframeのid要素')
106
+ driver.execute_script('arguments[0].scrollIntoView(true);', target)#iFrameの要素までスクロールする
107
+ time.sleep(2)
102
108
 
109
+ iframe = driver.find_element_by_id('iFrameのid要素')
110
+ driver.switch_to.frame(iframe)#<-★Debugで確認すると、ここで止まることがある。
111
+ with open('log.txt', 'w+',encoding="utf-8_sig") as f:
112
+ f.writelines(driver.page_source)
113
+ time.sleep(2)
114
+
115
+ driver.find_element_by_name("button").click()#ボタンを押す
116
+ time.sleep(2)
117
+
118
+ driver.switch_to.window(driver.window_handles[-1])#新しいウィンドウを有効にする
119
+ time.sleep(2)
120
+ ```
121
+
122
+
103
123
  ### 補足情報(FW/ツールのバージョンなど)
104
124
 
105
125
  Python 3.8

2

試したことを追加

2020/05/18 11:01

投稿

ji-desuji
ji-desuji

スコア11

title CHANGED
File without changes
body CHANGED
@@ -78,7 +78,28 @@
78
78
 
79
79
  sleepが足りないのかと思い、5秒程度まで長くしてみたのですがそれでも効果ありませんでした。
80
80
  約3回に1回失敗している感じです。
81
+  ⇒2020/5/17現在は、10~20回に1回しかアクセスできない状態。
81
82
 
83
+ 下記コードで、log.txtにソースを出力して確認はできた。
84
+ ```python
85
+ target = driver.find_element_by_id('iframeのid要素')
86
+ driver.execute_script('arguments[0].scrollIntoView(true);', target)#iFrameの要素までスクロールする
87
+ time.sleep(2)
88
+
89
+ iframe = driver.find_element_by_id('iFrameのid要素')
90
+ with open('log.txt', 'w+',encoding="utf-8_sig") as f:
91
+ f.writelines(driver.page_source)
92
+ driver.switch_to.frame(iframe)#<-★Debugで確認すると、ここで止まることがある。
93
+ time.sleep(2)
94
+
95
+ driver.find_element_by_name("button").click()#ボタンを押す
96
+ time.sleep(2)
97
+
98
+ driver.switch_to.window(driver.window_handles[-1])#新しいウィンドウを有効にする
99
+ time.sleep(2)
100
+ ```
101
+
102
+
82
103
  ### 補足情報(FW/ツールのバージョンなど)
83
104
 
84
105
  Python 3.8

1

コードを修正・追加

2020/05/17 05:45

投稿

ji-desuji
ji-desuji

スコア11

title CHANGED
File without changes
body CHANGED
@@ -57,16 +57,21 @@
57
57
 
58
58
  ### 該当のソースコード
59
59
 
60
- ```ここに言語名を入力
60
+ ```python
61
- iframe = driver.find_element_by_id('iFrame_ID')#ボタンを押すために、iframeに飛ぶ
61
+ target = driver.find_element_by_id('iframeのid要素')
62
- driver.switch_to.frame(iframe)
62
+ driver.execute_script('arguments[0].scrollIntoView(true);', target)#iFrameの要素までスクロールする
63
- time.sleep(2)
63
+ time.sleep(2)
64
64
 
65
- driver.find_element_by_name("button").click()#ボタンを押す
65
+ iframe = driver.find_element_by_id('iFrameのid要素')
66
+ print(iframe)#ここまで正常に動作
67
+ driver.switch_to.frame(iframe)#<-★Debugで確認すると、ここで止まることがある。
66
- time.sleep(2)
68
+ time.sleep(2)
67
69
 
70
+ driver.find_element_by_name("button").click()#ボタンを押す
71
+ time.sleep(2)
72
+
68
- driver.switch_to.window(driver.window_handles[-1])#新しいウィンドウを有効にする
73
+ driver.switch_to.window(driver.window_handles[-1])#新しいウィンドウを有効にする
69
- time.sleep(2)
74
+ time.sleep(2)
70
75
  ```
71
76
 
72
77
  ### 試したこと