質問編集履歴
4
その他、試したコードを追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -64,8 +64,32 @@
|
|
64
64
|
> Message: unexpected alert open: {Alert text : 指定されたお客様の情報がございません。
|
65
65
|
検索条件をご確認のうえ、再度操作してください。(処理結果コード 1:正常完了 業務処理結果コード 2:対象契約なしエラー)}
|
66
66
|
|
67
|
+
elseの際は、ページを更新して、次のID番号に進んでほしいのですが、上記の条件分岐したコードでは、ページが更新されずそこで止まってしまいます。
|
68
|
+
条件分岐を入れず、アラート消すコードだけで下記のように記載した際は、アラートを消し、ページを更新し、次々とID番号を更新して進んでいきます。
|
69
|
+
```python
|
70
|
+
NoId = 0000
|
67
71
|
|
72
|
+
while NoId <= 1000:
|
68
73
|
|
74
|
+
# 検索ボックスに「ID番号」を入力して、Enterキーを押す
|
75
|
+
driver.find_element(By.ID, "j_id0:FORM:KeiyakuNoId").send_keys(str(NoId) + Keys.ENTER)
|
76
|
+
|
77
|
+
# [検索]ボタンをクリック
|
78
|
+
driver.find_element(By.ID, "search").click()
|
79
|
+
|
80
|
+
# 1秒待つ
|
81
|
+
time.sleep(1)
|
82
|
+
|
83
|
+
# アラートを消す
|
84
|
+
Alert(driver).accept()
|
85
|
+
|
86
|
+
#ページを更新して戻る
|
87
|
+
driver.refresh()
|
88
|
+
|
89
|
+
NoId += 1
|
90
|
+
```
|
91
|
+
|
92
|
+
|
69
93
|
パターン②if文でアラートを指定
|
70
94
|
```python
|
71
95
|
NoId = 0000
|
@@ -124,6 +148,9 @@
|
|
124
148
|
> Message: no such alert
|
125
149
|
(Session info: chrome=87.0.4280.141)
|
126
150
|
|
151
|
+
こちらのコードでは、アラートを消して次のID番号へと進んでいくのですが、アラートをが出なかった際に、情報取得の操作が実行されず、そこで止まってしまいます。
|
152
|
+
|
153
|
+
|
127
154
|
良い条件分岐の方法があればご教示いただきたいです。
|
128
155
|
その他以下も併せて指定したいです。
|
129
156
|
・管理番号の検索範囲を「0000~1000」など指定したい
|
3
#コメントを一部修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -70,11 +70,11 @@
|
|
70
70
|
```python
|
71
71
|
NoId = 0000
|
72
72
|
|
73
|
-
#
|
73
|
+
#while文
|
74
74
|
while NoId <= 1000:
|
75
75
|
|
76
76
|
# 検索ボックスに「ID番号」を入力して、Enterキーを押す
|
77
|
-
driver.find_element(By.ID, "j_id0:FORM:KeiyakuNoId").send_keys(
|
77
|
+
driver.find_element(By.ID, "j_id0:FORM:KeiyakuNoId").send_keys(str(NoId) + Keys.ENTER)
|
78
78
|
|
79
79
|
# [検索]ボタンをクリック
|
80
80
|
driver.find_element(By.ID, "search").click()
|
2
#コメントを一部修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -10,11 +10,11 @@
|
|
10
10
|
```python
|
11
11
|
NoId = 0000
|
12
12
|
|
13
|
-
#
|
13
|
+
#while文
|
14
14
|
while NoId <= 1000:
|
15
15
|
|
16
16
|
# 検索ボックスに「ID番号」を入力して、Enterキーを押す
|
17
|
-
driver.find_element(By.ID, "j_id0:KeiyakuNoId").send_keys(
|
17
|
+
driver.find_element(By.ID, "j_id0:KeiyakuNoId").send_keys(str(NoId) + Keys.ENTER)
|
18
18
|
|
19
19
|
# [検索]ボタンをクリック
|
20
20
|
driver.find_element(By.ID, "search").click()
|
1
試したコードを記載しました。
title
CHANGED
File without changes
|
body
CHANGED
@@ -4,79 +4,129 @@
|
|
4
4
|
操作をしたいと思っています。管理番号で検索を行い、検索結果があった際はページが切り替わり、
|
5
5
|
情報が表示されます。検索結果がなかった際はアラートが表示されます。
|
6
6
|
|
7
|
-
管理番号を入力し検索・・・①
|
8
|
-
検索結果があった際・・・②-A
|
9
|
-
|
7
|
+
if文などを使い、アラートが出た際と出なかった際で条件分岐し、操作を指定したいのですが、条件分岐がうまくいきません。
|
10
8
|
|
11
|
-
|
9
|
+
パターン①if文でid属性を指定
|
12
|
-
|
10
|
+
```python
|
13
|
-
|
11
|
+
NoId = 0000
|
14
12
|
|
13
|
+
#for文
|
14
|
+
while NoId <= 1000:
|
15
15
|
|
16
|
+
# 検索ボックスに「ID番号」を入力して、Enterキーを押す
|
17
|
+
driver.find_element(By.ID, "j_id0:KeiyakuNoId").send_keys("x"+str(NoId) + Keys.ENTER)
|
18
|
+
|
19
|
+
# [検索]ボタンをクリック
|
20
|
+
driver.find_element(By.ID, "search").click()
|
21
|
+
time.sleep(1)
|
22
|
+
|
16
|
-
|
23
|
+
#id属性を確認
|
17
|
-
|
24
|
+
if len(driver.find_elements_by_id("j_id0:j_id1"))>0:
|
25
|
+
|
18
|
-
|
26
|
+
#ID属性の指定
|
27
|
+
body = driver.find_element(By.ID, "keiyaku-itiran")
|
28
|
+
|
29
|
+
#dd要素の指定
|
30
|
+
links = driver.find_elements(By.TAG_NAME, "dd")
|
31
|
+
|
32
|
+
#リスト作成
|
33
|
+
data_list = []
|
34
|
+
|
35
|
+
for link in links:
|
36
|
+
link_text = link.text
|
37
|
+
data_list.append(link_text)
|
38
|
+
|
39
|
+
#エクセル出力
|
40
|
+
for data in data_list:
|
41
|
+
ws_new["A"+str(row_num)].value = data_list[3]
|
42
|
+
ws_new["B"+str(row_num)].value = data_list[5]
|
43
|
+
ws_new["C"+str(row_num)].value = data_list[6]
|
44
|
+
ws_new["D"+str(row_num)].value = data_list[7]
|
45
|
+
|
46
|
+
wb_new.save("管理情報.xlsx")
|
47
|
+
|
48
|
+
#ページを更新して戻る
|
49
|
+
driver.refresh()
|
50
|
+
|
51
|
+
NoId += 1
|
52
|
+
|
53
|
+
else:
|
54
|
+
|
55
|
+
# アラートを消す
|
56
|
+
Alert(driver).accept()
|
57
|
+
|
58
|
+
#ページを更新して戻る
|
59
|
+
driver.refresh()
|
60
|
+
|
61
|
+
NoId += 1
|
62
|
+
```
|
63
|
+
条件を満たす際は、if以降の操作を実行しますが、elseの際がエラーとなり以下のメッセージが表示されます。
|
64
|
+
> Message: unexpected alert open: {Alert text : 指定されたお客様の情報がございません。
|
65
|
+
検索条件をご確認のうえ、再度操作してください。(処理結果コード 1:正常完了 業務処理結果コード 2:対象契約なしエラー)}
|
66
|
+
|
67
|
+
|
68
|
+
|
69
|
+
パターン②if文でアラートを指定
|
70
|
+
```python
|
19
71
|
NoId = 0000
|
20
72
|
|
73
|
+
#for文
|
21
|
-
|
74
|
+
while NoId <= 1000:
|
22
|
-
driver.find_element(By.ID, "j_id0:FORM:DataNoId").send_keys("x"+str(NoId) + Keys.ENTER)
|
23
75
|
|
24
|
-
|
76
|
+
# 検索ボックスに「ID番号」を入力して、Enterキーを押す
|
25
|
-
driver.find_element(By.ID, "
|
77
|
+
driver.find_element(By.ID, "j_id0:FORM:KeiyakuNoId").send_keys("x"+str(NoId) + Keys.ENTER)
|
26
|
-
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
|
27
78
|
|
79
|
+
# [検索]ボタンをクリック
|
80
|
+
driver.find_element(By.ID, "search").click()
|
81
|
+
time.sleep(1)
|
28
82
|
|
29
|
-
②-A:検索結果があった際の操作→情報を取得しエクセルへ入力、保存
|
30
|
-
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
|
31
|
-
|
83
|
+
#アラートを確認
|
32
|
-
|
84
|
+
if driver.switch_to.alert:
|
33
85
|
|
86
|
+
# アラートを消す
|
34
|
-
|
87
|
+
Alert(driver).accept()
|
35
|
-
links = body.find_elements(By.TAG_NAME, "dd")
|
36
88
|
|
37
|
-
|
89
|
+
#ページを更新して戻る
|
38
|
-
|
90
|
+
driver.refresh()
|
39
|
-
for link in links:
|
40
|
-
link_text = link.text
|
41
|
-
data_list.append(link_text)
|
42
91
|
|
92
|
+
NoId += 1
|
93
|
+
|
94
|
+
else:
|
95
|
+
|
43
|
-
|
96
|
+
#ID属性の指定
|
44
|
-
for data in data_list:
|
45
|
-
|
97
|
+
body = driver.find_element(By.ID, "keiyaku-itiran")
|
46
|
-
ws_new["B"+str(row_num)].value = data_list[5]
|
47
|
-
ws_new["C"+str(row_num)].value = data_list[6]
|
48
|
-
ws_new["D"+str(row_num)].value = data_list[7]
|
49
98
|
|
99
|
+
#dd要素の指定
|
50
|
-
|
100
|
+
links = driver.find_elements(By.TAG_NAME, "dd")
|
51
101
|
|
52
|
-
|
102
|
+
#リスト作成
|
53
|
-
|
103
|
+
data_list = []
|
54
|
-
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
|
55
104
|
|
105
|
+
for link in links:
|
106
|
+
link_text = link.text
|
56
|
-
|
107
|
+
data_list.append(link_text)
|
57
|
-
ーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーーー
|
58
|
-
#1秒待つ
|
59
|
-
time.sleep(1)
|
60
108
|
|
61
|
-
|
109
|
+
#エクセル出力
|
62
|
-
|
110
|
+
for data in data_list:
|
111
|
+
ws_new["A"+str(row_num)].value = data_list[3]
|
112
|
+
ws_new["B"+str(row_num)].value = data_list[5]
|
113
|
+
ws_new["C"+str(row_num)].value = data_list[6]
|
114
|
+
ws_new["D"+str(row_num)].value = data_list[7]
|
63
115
|
|
64
|
-
#ページを更新して戻る
|
65
|
-
driver.refresh()
|
66
|
-
|
116
|
+
wb_new.save("管理情報.xlsx")
|
67
117
|
|
118
|
+
#ページを更新して戻る
|
119
|
+
driver.refresh()
|
68
120
|
|
121
|
+
NoId += 1
|
122
|
+
```
|
69
|
-
|
123
|
+
条件を満たす際は、if以降の操作を実行しますが、elseの際がエラーとなり以下のメッセージが表示されます。
|
124
|
+
> Message: no such alert
|
70
|
-
|
125
|
+
(Session info: chrome=87.0.4280.141)
|
71
126
|
|
72
|
-
つきましては、②-Aと②-Bを区別する条件指定と
|
73
|
-
管理番号に+1して操作を繰り返す方法について
|
74
|
-
ご教示いただ
|
127
|
+
良い条件分岐の方法があればご教示いただきたいです。
|
75
|
-
その
|
128
|
+
その他以下も併せて指定したいです。
|
76
|
-
・管理番号の検索範囲を「0000~
|
129
|
+
・管理番号の検索範囲を「0000~1000」など指定したい
|
77
|
-
・
|
130
|
+
・取得情報をエクセル入力する際、1行ずつ下げていきたい
|
78
131
|
|
79
|
-
その他ド素人が見様見真似で書いたコードですので
|
80
|
-
修正した方がいい箇所があればご指摘いただけますと幸いです。
|
81
|
-
|
82
132
|
宜しくお願い致します。
|