質問編集履歴

4

該当箇所のコードを抜粋

2021/11/30 23:07

投稿

katahik
katahik

スコア79

test CHANGED
File without changes
test CHANGED
@@ -18,9 +18,23 @@
18
18
 
19
19
  皆様のお知恵をお貸しいただければ、幸いです。
20
20
 
21
+ ##### 該当箇所
22
+
23
+ ```
24
+
25
+ # time.sleepを使っていたら処理ができたのですが、WebDriverWaitを使うと下記エラーが表示
26
+
27
+ WebDriverWait(driver, 15).until(EC.presence_of_all_elements_located)
28
+
29
+ # time.sleep(20)
30
+
31
+ ```
21
32
 
22
33
 
34
+
35
+
36
+
23
- ##### code
37
+ ##### code全文
24
38
 
25
39
  ```
26
40
 

3

コード全文掲載

2021/11/30 23:07

投稿

katahik
katahik

スコア79

test CHANGED
File without changes
test CHANGED
@@ -34,37 +34,117 @@
34
34
 
35
35
  from selenium.webdriver.support import expected_conditions as EC
36
36
 
37
- from selenium.webdriver.support.select import Select
38
-
39
37
  import time
40
38
 
41
39
  import datetime
42
40
 
43
41
  # ドライバーを指定
44
42
 
43
+ from selenium.webdriver.support.select import Select
44
+
45
45
  driver = webdriver.Chrome('./chromedriver')
46
+
47
+
48
+
49
+ # 対象のWebサイトのURL
50
+
51
+ URL = 'http://localhost/login'
52
+
53
+
54
+
55
+ # 暗黙的な待機
56
+
57
+ driver.implicitly_wait(10)
58
+
59
+
60
+
61
+ # 最大の読み込み時間を設定 今回は最大30秒待機できるようにする
62
+
63
+ wait = WebDriverWait(driver=driver, timeout=30)
46
64
 
47
65
 
48
66
 
49
67
  try:
50
68
 
51
-
69
+ EXEC_TIME = datetime.datetime.now()
52
70
 
53
-
71
+ MAIL_ADDRESS = 'hogehoge@gmail.com'
54
72
 
55
-
73
+ PASSWORD = 'Password'
56
74
 
75
+
76
+
77
+ print('実行日時 ' + str(EXEC_TIME))
78
+
79
+
80
+
81
+ ## ログイン
82
+
83
+ driver.get(URL)
84
+
85
+
86
+
87
+ login_action = webdriver.common.action_chains.ActionChains(driver)
88
+
89
+
90
+
91
+ # メールアドレス入力
92
+
93
+ email_box = driver.find_element_by_xpath('/html/body/div[1]/main/div/div[2]/form/div[1]/div/input')
94
+
95
+ login_action.move_to_element_with_offset(email_box, 5, 5)
96
+
97
+ login_action.click()
98
+
99
+ login_action.send_keys(MAIL_ADDRESS)
100
+
101
+
102
+
103
+ # パスワード入力
104
+
105
+ password_box = driver.find_element_by_xpath('//*[@id="input-password"]')
106
+
107
+ login_action.move_to_element_with_offset(password_box, 5, 5)
108
+
109
+ login_action.click()
110
+
111
+ login_action.send_keys(PASSWORD)
112
+
113
+
114
+
115
+ # ログインボタン押下
116
+
117
+ login_btn = driver.find_element_by_xpath('/html/body/div[1]/main/div/div[2]/form/div[3]/button')
118
+
119
+ login_action.move_to_element_with_offset(login_btn, 5, 5)
120
+
121
+ login_action.click()
122
+
123
+
124
+
125
+ # 貯めていたキューを実行
126
+
127
+ login_action.perform()
128
+
129
+
130
+
57
-      # 画面が表示されるまで待機
131
+ # 画面が表示されるまで待機
132
+
133
+ # wait.until(EC.presence_of_all_elements_located)
58
134
 
59
135
  WebDriverWait(driver, 15).until(EC.presence_of_all_elements_located)
60
136
 
61
137
  # time.sleep(20)
62
138
 
139
+
140
+
141
+ # サイドメニューを開くボタンを押下
142
+
63
143
  side_menu_btn = driver.find_element_by_xpath('/html/body/div[1]/div[1]/label')
64
144
 
65
145
  if side_menu_btn.is_displayed():
66
146
 
67
- print(side_menu_btn.is_displayed()) # => True
147
+ print(side_menu_btn.is_displayed()) # => True
68
148
 
69
149
  side_menu_btn.click()
70
150
 
@@ -72,7 +152,21 @@
72
152
 
73
153
  print(side_menu_btn.is_displayed())
74
154
 
155
+
156
+
75
157
  print("表示されてないのでクリックできない")
158
+
159
+
160
+
161
+ print("正常終了します。")
162
+
163
+ # エラーが発生した時はエラーメッセージを吐き出す。
164
+
165
+ except Exception as e:
166
+
167
+ print(e)
168
+
169
+ print("エラーが発生しました。")
76
170
 
77
171
 
78
172
 

2

if文を追加

2021/11/30 23:03

投稿

katahik
katahik

スコア79

test CHANGED
File without changes
test CHANGED
@@ -62,7 +62,17 @@
62
62
 
63
63
  side_menu_btn = driver.find_element_by_xpath('/html/body/div[1]/div[1]/label')
64
64
 
65
+ if side_menu_btn.is_displayed():
66
+
67
+ print(side_menu_btn.is_displayed()) # => True
68
+
65
- side_menu_btn.click()
69
+ side_menu_btn.click()
70
+
71
+ else:
72
+
73
+ print(side_menu_btn.is_displayed())
74
+
75
+ print("表示されてないのでクリックできない")
66
76
 
67
77
 
68
78
 

1

Add a processing part to click.

2021/11/30 22:39

投稿

katahik
katahik

スコア79

test CHANGED
File without changes
test CHANGED
@@ -60,6 +60,10 @@
60
60
 
61
61
  # time.sleep(20)
62
62
 
63
+ side_menu_btn = driver.find_element_by_xpath('/html/body/div[1]/div[1]/label')
64
+
65
+ side_menu_btn.click()
66
+
63
67
 
64
68
 
65
69
  ```