Save Name Configuration

This commit is contained in:
naibo 2023-07-07 02:30:06 +08:00
parent 31bcb63daf
commit 06304b2a96
8 changed files with 411 additions and 40 deletions

View File

@ -26,7 +26,7 @@
"@electron-forge/maker-rpm": "^6.0.5", "@electron-forge/maker-rpm": "^6.0.5",
"@electron-forge/maker-squirrel": "^6.0.5", "@electron-forge/maker-squirrel": "^6.0.5",
"@electron-forge/maker-zip": "^6.0.5", "@electron-forge/maker-zip": "^6.0.5",
"electron": "^25.0.1" "electron": "^20.0.1"
} }
}, },
"node_modules/@electron-forge/cli": { "node_modules/@electron-forge/cli": {
@ -1676,6 +1676,17 @@
"typedarray": "^0.0.6" "typedarray": "^0.0.6"
} }
}, },
"node_modules/config-chain": {
"version": "1.1.13",
"resolved": "https://registry.npmjs.org/config-chain/-/config-chain-1.1.13.tgz",
"integrity": "sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==",
"dev": true,
"optional": true,
"dependencies": {
"ini": "^1.3.4",
"proto-list": "~1.2.1"
}
},
"node_modules/console-control-strings": { "node_modules/console-control-strings": {
"version": "1.1.0", "version": "1.1.0",
"dev": true, "dev": true,
@ -1966,6 +1977,12 @@
"minimatch": "^3.0.4" "minimatch": "^3.0.4"
} }
}, },
"node_modules/duplexer3": {
"version": "0.1.5",
"resolved": "https://registry.npmjs.org/duplexer3/-/duplexer3-0.1.5.tgz",
"integrity": "sha512-1A8za6ws41LQgv9HrE/66jyC5yuSjQ3L/KOpFtoBilsAK2iA2wuS5rTt1OCzIvtS2V7nVmedsUU+DGRcjBmOYA==",
"dev": true
},
"node_modules/eastasianwidth": { "node_modules/eastasianwidth": {
"version": "0.2.0", "version": "0.2.0",
"dev": true, "dev": true,
@ -1977,21 +1994,21 @@
"integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow=="
}, },
"node_modules/electron": { "node_modules/electron": {
"version": "25.2.0", "version": "20.3.12",
"resolved": "https://registry.npmjs.org/electron/-/electron-25.2.0.tgz", "resolved": "https://registry.npmjs.org/electron/-/electron-20.3.12.tgz",
"integrity": "sha512-I/rhcW2sV2fyiveVSBr2N7v5ZiCtdGY0UiNCDZgk2fpSC+irQjbeh7JT2b4vWmJ2ogOXBjqesrN9XszTIG6DHg==", "integrity": "sha512-CuCZKhwdSXaUNIoEuPVZ25YH18zmox3wEM8Acwcy9tlpD8Jiuq3ji3RZ98eVWJalrpqbdE9LtTD/sLC86GIkLg==",
"dev": true, "dev": true,
"hasInstallScript": true, "hasInstallScript": true,
"dependencies": { "dependencies": {
"@electron/get": "^2.0.0", "@electron/get": "^1.14.1",
"@types/node": "^18.11.18", "@types/node": "^16.11.26",
"extract-zip": "^2.0.1" "extract-zip": "^2.0.1"
}, },
"bin": { "bin": {
"electron": "cli.js" "electron": "cli.js"
}, },
"engines": { "engines": {
"node": ">= 12.20.55" "node": ">= 10.17.0"
} }
}, },
"node_modules/electron-installer-common": { "node_modules/electron-installer-common": {
@ -2159,6 +2176,226 @@
"node": ">= 4.0.0" "node": ">= 4.0.0"
} }
}, },
"node_modules/electron/node_modules/@electron/get": {
"version": "1.14.1",
"resolved": "https://registry.npmjs.org/@electron/get/-/get-1.14.1.tgz",
"integrity": "sha512-BrZYyL/6m0ZXz/lDxy/nlVhQz+WF+iPS6qXolEU8atw7h6v1aYkjwJZ63m+bJMBTxDE66X+r2tPS4a/8C82sZw==",
"dev": true,
"dependencies": {
"debug": "^4.1.1",
"env-paths": "^2.2.0",
"fs-extra": "^8.1.0",
"got": "^9.6.0",
"progress": "^2.0.3",
"semver": "^6.2.0",
"sumchecker": "^3.0.1"
},
"engines": {
"node": ">=8.6"
},
"optionalDependencies": {
"global-agent": "^3.0.0",
"global-tunnel-ng": "^2.7.1"
}
},
"node_modules/electron/node_modules/@sindresorhus/is": {
"version": "0.14.0",
"resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-0.14.0.tgz",
"integrity": "sha512-9NET910DNaIPngYnLLPeg+Ogzqsi9uM4mSboU5y6p8S5DzMTVEsJZrawi+BoDNUVBa2DhJqQYUFvMDfgU062LQ==",
"dev": true,
"engines": {
"node": ">=6"
}
},
"node_modules/electron/node_modules/@szmarczak/http-timer": {
"version": "1.1.2",
"resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-1.1.2.tgz",
"integrity": "sha512-XIB2XbzHTN6ieIjfIMV9hlVcfPU26s2vafYWQcZHWXHOxiaRZYEDKEwdl129Zyg50+foYV2jCgtrqSA6qNuNSA==",
"dev": true,
"dependencies": {
"defer-to-connect": "^1.0.1"
},
"engines": {
"node": ">=6"
}
},
"node_modules/electron/node_modules/@types/node": {
"version": "16.18.38",
"resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.38.tgz",
"integrity": "sha512-6sfo1qTulpVbkxECP+AVrHV9OoJqhzCsfTNp5NIG+enM4HyM3HvZCO798WShIXBN0+QtDIcutJCjsVYnQP5rIQ==",
"dev": true
},
"node_modules/electron/node_modules/cacheable-request": {
"version": "6.1.0",
"resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-6.1.0.tgz",
"integrity": "sha512-Oj3cAGPCqOZX7Rz64Uny2GYAZNliQSqfbePrgAQ1wKAihYmCUnraBtJtKcGR4xz7wF+LoJC+ssFZvv5BgF9Igg==",
"dev": true,
"dependencies": {
"clone-response": "^1.0.2",
"get-stream": "^5.1.0",
"http-cache-semantics": "^4.0.0",
"keyv": "^3.0.0",
"lowercase-keys": "^2.0.0",
"normalize-url": "^4.1.0",
"responselike": "^1.0.2"
},
"engines": {
"node": ">=8"
}
},
"node_modules/electron/node_modules/decompress-response": {
"version": "3.3.0",
"resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-3.3.0.tgz",
"integrity": "sha512-BzRPQuY1ip+qDonAOz42gRm/pg9F768C+npV/4JOsxRC2sq+Rlk+Q4ZCAsOhnIaMrgarILY+RMUIvMmmX1qAEA==",
"dev": true,
"dependencies": {
"mimic-response": "^1.0.0"
},
"engines": {
"node": ">=4"
}
},
"node_modules/electron/node_modules/defer-to-connect": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-1.1.3.tgz",
"integrity": "sha512-0ISdNousHvZT2EiFlZeZAHBUvSxmKswVCEf8hW7KWgG4a8MVEu/3Vb6uWYozkjylyCxe0JBIiRB1jV45S70WVQ==",
"dev": true
},
"node_modules/electron/node_modules/fs-extra": {
"version": "8.1.0",
"resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz",
"integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==",
"dev": true,
"dependencies": {
"graceful-fs": "^4.2.0",
"jsonfile": "^4.0.0",
"universalify": "^0.1.0"
},
"engines": {
"node": ">=6 <7 || >=8"
}
},
"node_modules/electron/node_modules/got": {
"version": "9.6.0",
"resolved": "https://registry.npmjs.org/got/-/got-9.6.0.tgz",
"integrity": "sha512-R7eWptXuGYxwijs0eV+v3o6+XH1IqVK8dJOEecQfTmkncw9AV4dcw/Dhxi8MdlqPthxxpZyizMzyg8RTmEsG+Q==",
"dev": true,
"dependencies": {
"@sindresorhus/is": "^0.14.0",
"@szmarczak/http-timer": "^1.1.2",
"cacheable-request": "^6.0.0",
"decompress-response": "^3.3.0",
"duplexer3": "^0.1.4",
"get-stream": "^4.1.0",
"lowercase-keys": "^1.0.1",
"mimic-response": "^1.0.1",
"p-cancelable": "^1.0.0",
"to-readable-stream": "^1.0.0",
"url-parse-lax": "^3.0.0"
},
"engines": {
"node": ">=8.6"
}
},
"node_modules/electron/node_modules/got/node_modules/get-stream": {
"version": "4.1.0",
"resolved": "https://registry.npmjs.org/get-stream/-/get-stream-4.1.0.tgz",
"integrity": "sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==",
"dev": true,
"dependencies": {
"pump": "^3.0.0"
},
"engines": {
"node": ">=6"
}
},
"node_modules/electron/node_modules/got/node_modules/lowercase-keys": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
"integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/electron/node_modules/json-buffer": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.0.tgz",
"integrity": "sha512-CuUqjv0FUZIdXkHPI8MezCnFCdaTAacej1TZYulLoAg1h/PhwkdXFN4V/gzY4g+fMBCOV2xF+rp7t2XD2ns/NQ==",
"dev": true
},
"node_modules/electron/node_modules/jsonfile": {
"version": "4.0.0",
"resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz",
"integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==",
"dev": true,
"optionalDependencies": {
"graceful-fs": "^4.1.6"
}
},
"node_modules/electron/node_modules/keyv": {
"version": "3.1.0",
"resolved": "https://registry.npmjs.org/keyv/-/keyv-3.1.0.tgz",
"integrity": "sha512-9ykJ/46SN/9KPM/sichzQ7OvXyGDYKGTaDlKMGCAlg2UK8KRy4jb0d8sFc+0Tt0YYnThq8X2RZgCg74RPxgcVA==",
"dev": true,
"dependencies": {
"json-buffer": "3.0.0"
}
},
"node_modules/electron/node_modules/normalize-url": {
"version": "4.5.1",
"resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-4.5.1.tgz",
"integrity": "sha512-9UZCFRHQdNrfTpGg8+1INIg93B6zE0aXMVFkw1WFwvO4SlZywU6aLg5Of0Ap/PgcbSw4LNxvMWXMeugwMCX0AA==",
"dev": true,
"engines": {
"node": ">=8"
}
},
"node_modules/electron/node_modules/p-cancelable": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-1.1.0.tgz",
"integrity": "sha512-s73XxOZ4zpt1edZYZzvhqFa6uvQc1vwUa0K0BdtIZgQMAJj9IbebH+JkgKZc9h+B05PKHLOTl4ajG1BmNrVZlw==",
"dev": true,
"engines": {
"node": ">=6"
}
},
"node_modules/electron/node_modules/responselike": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/responselike/-/responselike-1.0.2.tgz",
"integrity": "sha512-/Fpe5guzJk1gPqdJLJR5u7eG/gNY4nImjbRDaVWVMRhne55TCmj2i9Q+54PBRfatRC8v/rIiv9BN0pMd9OV5EQ==",
"dev": true,
"dependencies": {
"lowercase-keys": "^1.0.0"
}
},
"node_modules/electron/node_modules/responselike/node_modules/lowercase-keys": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-1.0.1.tgz",
"integrity": "sha512-G2Lj61tXDnVFFOi8VZds+SoQjtQC3dgokKdDG2mTm1tx4m50NUHBOZSBwQQHyy0V12A0JTG4icfZQH+xPyh8VA==",
"dev": true,
"engines": {
"node": ">=0.10.0"
}
},
"node_modules/electron/node_modules/semver": {
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
"dev": true,
"bin": {
"semver": "bin/semver.js"
}
},
"node_modules/electron/node_modules/universalify": {
"version": "0.1.2",
"resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz",
"integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==",
"dev": true,
"engines": {
"node": ">= 4.0.0"
}
},
"node_modules/emoji-regex": { "node_modules/emoji-regex": {
"version": "8.0.0", "version": "8.0.0",
"dev": true, "dev": true,
@ -2917,6 +3154,22 @@
"which": "bin/which" "which": "bin/which"
} }
}, },
"node_modules/global-tunnel-ng": {
"version": "2.7.1",
"resolved": "https://registry.npmjs.org/global-tunnel-ng/-/global-tunnel-ng-2.7.1.tgz",
"integrity": "sha512-4s+DyciWBV0eK148wqXxcmVAbFVPqtc3sEtUE/GTQfuU80rySLcMhUmHKSHI7/LDj8q0gDYI1lIhRRB7ieRAqg==",
"dev": true,
"optional": true,
"dependencies": {
"encodeurl": "^1.0.2",
"lodash": "^4.17.10",
"npm-conf": "^1.1.3",
"tunnel": "^0.0.6"
},
"engines": {
"node": ">=0.10"
}
},
"node_modules/globalthis": { "node_modules/globalthis": {
"version": "1.0.3", "version": "1.0.3",
"dev": true, "dev": true,
@ -4043,6 +4296,30 @@
"url": "https://github.com/sponsors/sindresorhus" "url": "https://github.com/sponsors/sindresorhus"
} }
}, },
"node_modules/npm-conf": {
"version": "1.1.3",
"resolved": "https://registry.npmjs.org/npm-conf/-/npm-conf-1.1.3.tgz",
"integrity": "sha512-Yic4bZHJOt9RCFbRP3GgpqhScOY4HH3V2P8yBj6CeYq118Qr+BLXqT2JvpJ00mryLESpgOxf5XlFv4ZjXxLScw==",
"dev": true,
"optional": true,
"dependencies": {
"config-chain": "^1.1.11",
"pify": "^3.0.0"
},
"engines": {
"node": ">=4"
}
},
"node_modules/npm-conf/node_modules/pify": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz",
"integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==",
"dev": true,
"optional": true,
"engines": {
"node": ">=4"
}
},
"node_modules/npm-run-path": { "node_modules/npm-run-path": {
"version": "2.0.2", "version": "2.0.2",
"dev": true, "dev": true,
@ -4451,6 +4728,15 @@
"node": ">=6" "node": ">=6"
} }
}, },
"node_modules/prepend-http": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/prepend-http/-/prepend-http-2.0.0.tgz",
"integrity": "sha512-ravE6m9Atw9Z/jjttRUZ+clIXogdghyZAuWJ3qEzjT+jI/dL1ifAqhZeC5VHzQp1MSt1+jxKkFNemj/iO7tVUA==",
"dev": true,
"engines": {
"node": ">=4"
}
},
"node_modules/process-nextick-args": { "node_modules/process-nextick-args": {
"version": "2.0.1", "version": "2.0.1",
"license": "MIT" "license": "MIT"
@ -4475,6 +4761,13 @@
"node": ">=10" "node": ">=10"
} }
}, },
"node_modules/proto-list": {
"version": "1.2.4",
"resolved": "https://registry.npmjs.org/proto-list/-/proto-list-1.2.4.tgz",
"integrity": "sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==",
"dev": true,
"optional": true
},
"node_modules/proxy-addr": { "node_modules/proxy-addr": {
"version": "2.0.7", "version": "2.0.7",
"resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz",
@ -5339,6 +5632,15 @@
"tmp": "^0.2.0" "tmp": "^0.2.0"
} }
}, },
"node_modules/to-readable-stream": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/to-readable-stream/-/to-readable-stream-1.0.0.tgz",
"integrity": "sha512-Iq25XBt6zD5npPhlLVXGFN3/gyR2/qODcKNNyTMd4vbm39HUaOiAM4PMq0eMVC/Tkxz+Zjdsc55g9yyz+Yq00Q==",
"dev": true,
"engines": {
"node": ">=6"
}
},
"node_modules/to-regex-range": { "node_modules/to-regex-range": {
"version": "5.0.1", "version": "5.0.1",
"dev": true, "dev": true,
@ -5387,6 +5689,16 @@
"dev": true, "dev": true,
"license": "0BSD" "license": "0BSD"
}, },
"node_modules/tunnel": {
"version": "0.0.6",
"resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz",
"integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==",
"dev": true,
"optional": true,
"engines": {
"node": ">=0.6.11 <=0.7.0 || >=0.7.3"
}
},
"node_modules/type-fest": { "node_modules/type-fest": {
"version": "0.21.3", "version": "0.21.3",
"dev": true, "dev": true,
@ -5453,6 +5765,18 @@
"node": ">= 0.8" "node": ">= 0.8"
} }
}, },
"node_modules/url-parse-lax": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/url-parse-lax/-/url-parse-lax-3.0.0.tgz",
"integrity": "sha512-NjFKA0DidqPa5ciFcSrXnAltTtzz84ogy+NebPvfEgAck0+TNg4UJ4IN+fB7zRZfbgUf0syOo9MDxFkDSMuFaQ==",
"dev": true,
"dependencies": {
"prepend-http": "^2.0.0"
},
"engines": {
"node": ">=4"
}
},
"node_modules/username": { "node_modules/username": {
"version": "5.1.0", "version": "5.1.0",
"dev": true, "dev": true,

View File

@ -27,7 +27,7 @@
"@electron-forge/maker-rpm": "^6.0.5", "@electron-forge/maker-rpm": "^6.0.5",
"@electron-forge/maker-squirrel": "^6.0.5", "@electron-forge/maker-squirrel": "^6.0.5",
"@electron-forge/maker-zip": "^6.0.5", "@electron-forge/maker-zip": "^6.0.5",
"electron": "^25.0.1" "electron": "^20.0.1"
}, },
"repository": "https://github.com/NaiboWang/EasySpider", "repository": "https://github.com/NaiboWang/EasySpider",
"dependencies": { "dependencies": {

View File

@ -524,8 +524,10 @@
<select id="outputFormat" class="form-control"> <select id="outputFormat" class="form-control">
<option value = "csv">CSV</option> <option value = "csv">CSV</option>
<option value = "xlsx">XLSXEXCEL</option> <option value = "xlsx">XLSXEXCEL</option>
<option value = "mysql">MySQL</option> <option value = "mysql">MySQL数据库</option>
</select> </select>
<label>导出文件名/数据库表格名称如果值为“Time”则名称为执行任务时的时间</label>
<input onkeydown="inputDelete(event)" value="Time" id="saveName" class="form-control"></input>
<label>浏览器模拟类型:</label> <label>浏览器模拟类型:</label>
<select id="environment" name="environment" class="form-control"> <select id="environment" name="environment" class="form-control">
<option value = 0>电脑端</option> <option value = 0>电脑端</option>

View File

@ -118,26 +118,38 @@
<td>{{"Argument Value 2_1~参数值2_2" | lang}}</td> <td>{{"Argument Value 2_1~参数值2_2" | lang}}</td>
<td>...</td> <td>...</td>
</tr> </tr>
<tr>
<td>...</td>
<td>...</td>
<td>...</td>
</tr>
</tbody> </tbody>
</table> </table>
<label>{{"The 'Invoke Name' is shown at the main table of this page, such as 'urlList_0' is the invoke name of the open page operation.~“调用名称”在本页面的主表格中显示例如“urlList_0”是“打开网页“操作的调用名称。" | lang}}</label> <label>{{"The 'Invoke Name' is shown at the main table of this page, such as 'urlList_0' is the invoke name of the open page operation.~“调用名称”在本页面的主表格中显示例如“urlList_0”是“打开网页“操作的调用名称。" | lang}}</label>
<label>{{"You can just put part of the arguments in the Excel file, and the values of the rest of the arguments will be set to default. Example table for this task is:~您可以只在Excel文件中放入部分参数其余参数值将被设置为默认值。一个针对此任务的表格示例为" | lang}}</label> <label>{{"You can just put part of the arguments in the Excel file, and the values of the rest of the arguments will be set to default. Example table for this task is:~您可以只在Excel文件中放入部分参数其余参数值将被设置为默认值。一个针对此任务的表格示例为" | lang}}</label>
<table class="table table-bordered excel"> <table class="table table-bordered excel">
<thead>
<tr>
<th v-for="i in Math.min(3, task.inputParameters.length)" v-if="task.inputParameters.length>0">
{{task.inputParameters[i-1]["name"]}}
</th>
</tr>
</thead>
<tbody> <tbody>
<tr> <tr>
<td v-for="i in Math.min(3, task.inputParameters.length)" v-if="task.inputParameters.length>0"> <td v-for="i in Math.min(3, task.inputParameters.length)" v-if="task.inputParameters.length>0">
{{task.inputParameters[i-1]["name"]}} {{getLine(i,0)}}
</td>
</tr>
<tr>
<td v-for="i in Math.min(3, task.inputParameters.length)" v-if="task.inputParameters.length>0">
{{task.inputParameters[i-1]['value']}}
</td> </td>
<tr> <tr>
<tr> <tr>
<td v-for="i in Math.min(3, task.inputParameters.length)"> <td v-for="i in Math.min(3, task.inputParameters.length)">
<div v-if="task.inputParameters[i-1]['name'].indexOf('url') >=0"> {{getLine(i,1)}}
{{task.inputParameters[i-1]['value']}} </td>
<tr>
<tr>
<td v-for="i in Math.min(3, task.inputParameters.length)">
<div v-if="task.inputParameters[i-1]['value'].toString().split('\n').length >=2 || task.inputParameters[i-1]['name'].indexOf('url') >=0">
...
</div> </div>
</td> </td>
<tr> <tr>
@ -276,7 +288,18 @@
url = "taskInfo.html?id="+getUrlParam("id")+"&lang=en&type="+getUrlParam("type")+"&wsport="+getUrlParam("wsport")+"&backEndAddressServiceWrapper=" + app.$data.backEndAddressServiceWrapper url = "taskInfo.html?id="+getUrlParam("id")+"&lang=en&type="+getUrlParam("type")+"&wsport="+getUrlParam("wsport")+"&backEndAddressServiceWrapper=" + app.$data.backEndAddressServiceWrapper
} }
window.location.href = url; window.location.href = url;
}, readFromExcel: function(){ }, getLine: function(i, index){
const value = this.task.inputParameters[i-1]["value"].toString();
const parts = value.split("\n");
if(parts.length > index){
return parts[index];
} else if(this.task.inputParameters[i-1]["name"].indexOf("url") >=0){
return parts[0];
} else {
return "";
}
},
readFromExcel: function(){
$('#excelModal').modal('show'); $('#excelModal').modal('show');
}, submitFile: function() { }, submitFile: function() {
let form_data = new FormData(); let form_data = new FormData();

View File

@ -429,6 +429,7 @@ function saveService(type) {
"environment": environment, "environment": environment,
"maxViewLength": parseInt($("#maxViewLength").val()), "maxViewLength": parseInt($("#maxViewLength").val()),
"outputFormat": $("#outputFormat").val(), "outputFormat": $("#outputFormat").val(),
"saveName": $("#saveName").val(),
"containJudge": containJudge, "containJudge": containJudge,
"desc": serviceDescription, "desc": serviceDescription,
"inputParameters": inputParameters, "inputParameters": inputParameters,

File diff suppressed because one or more lines are too long

View File

@ -12,7 +12,7 @@
"justMyCode": true, "justMyCode": true,
// "args": ["--id", "[7]", "--read_type", "remote", "--headless", "0"] // "args": ["--id", "[7]", "--read_type", "remote", "--headless", "0"]
// "args": ["--id", "[9]", "--read_type", "remote", "--headless", "0", "--saved_file_name", "YOUTUBE"] // "args": ["--id", "[9]", "--read_type", "remote", "--headless", "0", "--saved_file_name", "YOUTUBE"]
"args": ["--id", "[16]", "--headless", "0", "--user_data", "1"] "args": ["--id", "[124]", "--headless", "0", "--user_data", "1"]
} }
] ]
} }

View File

@ -48,16 +48,38 @@ desired_capabilities["pageLoadStrategy"] = "none"
class BrowserThread(Thread): class BrowserThread(Thread):
def __init__(self, browser_t, id, service, version, event, config): def __init__(self, browser_t, id, service, version, event, saveName, config):
Thread.__init__(self) Thread.__init__(self)
self.browser = browser_t self.browser = browser_t
self.config = config self.config = config
self.id = id self.id = id
self.event = event self.event = event
self.saveName = saveName try:
self.saveName = service["saveName"] # 保存文件的名字
except:
now = datetime.now()
# 将时间格式化为精确到毫秒的字符串
self.saveName = now.strftime("%Y_%m_%d_%H_%M_%S_%f")
self.log = "" self.log = ""
self.OUTPUT = "" self.OUTPUT = ""
self.SAVED = False self.SAVED = False
# 名称设定
if saveName != "": # 命令行覆盖保存名称
self.saveName = saveName # 保存文件的名字
elif self.saveName == "Time":
# 获取当前时间
now = datetime.now()
# 将时间格式化为精确到毫秒的字符串
self.saveName = now.strftime("%Y_%m_%d_%H_%M_%S_%f")
print("Save Name for task ID", i, "is:", self.saveName)
print("任务ID", i, "的保存文件名为:", self.saveName)
if not os.path.exists("Data/Task_" + str(i)):
os.mkdir("Data/Task_" + str(i))
if not os.path.exists("Data/Task_" + str(i) + "/" + self.saveName):
os.mkdir("Data/Task_" + str(i) + "/" + self.saveName) # 创建保存文件夹用来保存截图
stealth_path = driver_path[:driver_path.find( stealth_path = driver_path[:driver_path.find(
"chromedriver")] + "stealth.min.js" "chromedriver")] + "stealth.min.js"
with open(stealth_path, 'r') as f: with open(stealth_path, 'r') as f:
@ -200,7 +222,10 @@ class BrowserThread(Thread):
self.log = "" self.log = ""
def scrollDown(self, para, rt=""): def scrollDown(self, para, rt=""):
try:
time.sleep(para["scrollWaitTime"]) # 下拉前等待 time.sleep(para["scrollWaitTime"]) # 下拉前等待
except:
pass
scrollType = int(para["scrollType"]) scrollType = int(para["scrollType"])
try: try:
if scrollType != 0 and para["scrollCount"] > 0: # 控制屏幕向下滚动 if scrollType != 0 and para["scrollCount"] > 0: # 控制屏幕向下滚动
@ -212,7 +237,10 @@ class BrowserThread(Thread):
body.send_keys(Keys.PAGE_DOWN) body.send_keys(Keys.PAGE_DOWN)
elif scrollType == 2: elif scrollType == 2:
body.send_keys(Keys.END) body.send_keys(Keys.END)
try:
time.sleep(para["scrollWaitTime"]) # 下拉完等待 time.sleep(para["scrollWaitTime"]) # 下拉完等待
except:
pass
except: except:
self.Log('Time out after set seconds when scrolling. ') self.Log('Time out after set seconds when scrolling. ')
self.recordLog('Time out after set seconds when scrolling') self.recordLog('Time out after set seconds when scrolling')
@ -226,7 +254,10 @@ class BrowserThread(Thread):
body.send_keys(Keys.PGDN) body.send_keys(Keys.PGDN)
elif scrollType == 2: elif scrollType == 2:
body.send_keys(Keys.END) body.send_keys(Keys.END)
try:
time.sleep(para["scrollWaitTime"]) # 下拉完等待 time.sleep(para["scrollWaitTime"]) # 下拉完等待
except:
pass
if rt != "": if rt != "":
rt.end() rt.end()
@ -862,7 +893,10 @@ class BrowserThread(Thread):
self.Log('Time out after set seconds when loading clicked page') self.Log('Time out after set seconds when loading clicked page')
self.recordLog( self.recordLog(
'Time out after set seconds when loading clicked page') 'Time out after set seconds when loading clicked page')
try:
self.browser.execute_script('window.stop()') self.browser.execute_script('window.stop()')
except:
pass
except Exception as e: except Exception as e:
self.Log(e) self.Log(e)
self.recordLog(str(e)) self.recordLog(str(e))
@ -1336,19 +1370,6 @@ if __name__ == '__main__':
for i in c.id: for i in c.id:
print(options) print(options)
print("id: ", i) print("id: ", i)
if c.saved_file_name != "":
saveName = c.saved_file_name # 保存文件的名字
else:
# 获取当前时间
now = datetime.now()
# 将时间格式化为精确到毫秒的字符串
saveName = now.strftime("%Y_%m_%d_%H_%M_%S_%f")
print("Save Name for task ID", i, "is:", saveName)
print("任务ID", i, "的保存文件名为:", saveName)
if not os.path.exists("Data/Task_" + str(i)):
os.mkdir("Data/Task_" + str(i))
if not os.path.exists("Data/Task_" + str(i) + "/" + saveName):
os.mkdir("Data/Task_" + str(i) + "/" + saveName) # 创建保存文件夹用来保存截图
if c.read_type == "remote": if c.read_type == "remote":
print("remote") print("remote")
content = requests.get( content = requests.get(
@ -1402,7 +1423,7 @@ if __name__ == '__main__':
event = Event() event = Event()
event.set() event.set()
thread = BrowserThread(browser_t, i, service, thread = BrowserThread(browser_t, i, service,
c.version, event, config=config) c.version, event, c.saved_file_name, config=config)
print("Thread with task id: ", i, " is created") print("Thread with task id: ", i, " is created")
threads.append(thread) threads.append(thread)
thread.start() thread.start()