質問編集履歴

2

書式の改善

2019/08/03 00:11

投稿

takakoppu
takakoppu

スコア6

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,38 @@
1
1
  ブラウザで「Node発火ボタン」を押すと$cmdのコマンドを発動させたいのですが、動きません。
2
+
3
+ ▼top.php
4
+
5
+ ```ここに言語を入力
6
+
7
+ <?php
8
+
9
+ function autocsd() {
10
+
11
+ $cmd = "/usr/local/bin/node /var/www/html/test/autoCsd.js";
12
+
13
+ exec($cmd, $opt, $return_ver);
14
+
15
+ var_dump($opt);
16
+
17
+ echo '実行結果:'.$return_ver;
18
+
19
+ }
20
+
21
+
22
+
23
+ if (isset($_GET['func'])) {
24
+
25
+ autocsd();
26
+
27
+ }
28
+
29
+ ?>
30
+
31
+
32
+
33
+ <a href='top.php?func=true'>Node発火ボタン</a>
34
+
35
+ ```
2
36
 
3
37
 
4
38
 
@@ -122,38 +156,6 @@
122
156
 
123
157
 
124
158
 
125
- ```ここに言語を入力
126
-
127
- <?php
128
-
129
- function autocsd() {
130
-
131
- $cmd = "/usr/local/bin/node /var/www/html/test/autoCsd.js";
132
-
133
- exec($cmd, $opt, $return_ver);
134
-
135
- var_dump($opt);
136
-
137
- echo '実行結果:'.$return_ver;
138
-
139
- }
140
-
141
-
142
-
143
- if (isset($_GET['func'])) {
144
-
145
- autocsd();
146
-
147
- }
148
-
149
- ?>
150
-
151
-
152
-
153
- <a href='top.php?func=true'>Node発火ボタン</a>
154
-
155
- ```
156
-
157
159
 
158
160
 
159
161
  ▼実行結果

1

コード追記

2019/08/03 00:11

投稿

takakoppu
takakoppu

スコア6

test CHANGED
File without changes
test CHANGED
@@ -1,4 +1,126 @@
1
1
  ブラウザで「Node発火ボタン」を押すと$cmdのコマンドを発動させたいのですが、動きません。
2
+
3
+
4
+
5
+ ▼autoCsd.js
6
+
7
+ ```ここに言語を入力
8
+
9
+ const puppeteer = require('puppeteer');
10
+
11
+
12
+
13
+ // 定数 (後述)
14
+
15
+ const LOGIN_URL = 'xxx';
16
+
17
+ const LOGIN_ACCOUNT = 'xxx';
18
+
19
+ const LOGIN_USER = 'xxx';
20
+
21
+ const LOGIN_PASS = 'xxx';
22
+
23
+ const TARGET_URL = 'xxx';
24
+
25
+ const LOGIN_ACCOUNT_SELECTOR = 'input[name="loginidfield"]';
26
+
27
+ const LOGIN_USER_SELECTOR = 'input[name="accountidfield"]';
28
+
29
+ const LOGIN_PASS_SELECTOR = 'input[name="passwordfield"]';
30
+
31
+ const LOGIN_SUBMIT_SELECTOR = 'input[name="submit"]';
32
+
33
+
34
+
35
+
36
+
37
+ (async () => {
38
+
39
+ const browser = await puppeteer.launch({//ブラウザを開く
40
+
41
+ args: ['--no-sandbox', '--disable-setuid-sandbox'],
42
+
43
+ headless: false, // ブラウザを表示するか (デバッグの時は false にしたほうが画面が見えてわかりやすいです)
44
+
45
+ });
46
+
47
+ const page = await browser.newPage(); // 新規ページ
48
+
49
+ await page.setViewport({ width: 1440, height: 900 }); // ビューポート (ウィンドウサイズ)
50
+
51
+ await page.setExtraHTTPHeaders({ // 必要な場合、HTTPヘッダを追加
52
+
53
+ 'Accept-Language': 'ja'
54
+
55
+ });
56
+
57
+
58
+
59
+ // ログイン画面でログイン
60
+
61
+ await page.goto(LOGIN_URL, { waitUntil: 'domcontentloaded' });
62
+
63
+ await page.type(LOGIN_ACCOUNT_SELECTOR, LOGIN_ACCOUNT); // アカウント名入力
64
+
65
+ await page.type(LOGIN_USER_SELECTOR, LOGIN_USER); // ユーザー名入力
66
+
67
+ await page.type(LOGIN_PASS_SELECTOR, LOGIN_PASS); // パスワード入力
68
+
69
+ await Promise.all([ // ログインボタンクリック
70
+
71
+ // クリック後ページ遷移後通信が完了するまで待つ (ページによっては 'domcontentloaded' 等でも可)
72
+
73
+ page.waitForNavigation({ waitUntil: 'networkidle0' }),
74
+
75
+ page.click(LOGIN_SUBMIT_SELECTOR),
76
+
77
+ ]);
78
+
79
+ // ログイン後の画面に移動
80
+
81
+ await page.goto(TARGET_URL);
82
+
83
+
84
+
85
+ await Promise.all([
86
+
87
+ page.waitForNavigation({ waitUntil: 'networkidle0' }),
88
+
89
+ page.click('#navi03 a'),
90
+
91
+ ]);
92
+
93
+ await page.select('select[name="fsForwardStatus"]','02');
94
+
95
+
96
+
97
+ //検索をクリック
98
+
99
+ await page.click('input[name="imageField42"]');
100
+
101
+
102
+
103
+ await page.select('select[name="fsDownloadCode"]','02');
104
+
105
+
106
+
107
+ //ダウンロードをクリック
108
+
109
+ await page.click('input[name="imageField4"]');
110
+
111
+ await sleep(1000);
112
+
113
+
114
+
115
+ await browser.close();
116
+
117
+ })();
118
+
119
+
120
+
121
+ ```
122
+
123
+
2
124
 
3
125
  ```ここに言語を入力
4
126