【Selenium】window让bat脚本后台运行,周期重置standalone服务

背景:

在构建selenium的node服务时,我们总是要通过命令或脚本在远程机器上起一个命令窗来维持服务运行状态。这种方式长时间运行窗口会有过多日志打出,并在后面会出现selenium-server服务内容溢出,导致脚本如法正常执行

解决:

  1. 因为执行jar文件,所以远程window上一定会有java环境,为了降低环境的构建,采用bat脚本的方式来处理任务
  2. 然后我们可以在window的任务中添加定时任务:每周五的10:20:00执行脚本
  3. 注意点是我们在不同的机器上使用bat时,尽量时通过新建txt文件然后修改后缀的方式来新建bat文件,不然会有报错
@echo off
:: 这里控制脚本的后台执行
if "%1" == "h" goto begin
mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit
:begin
chcp 65001
setlocal enabledelayedexpansion

:: 设置端口号,也就是server端口
set port=4444
:: 设置当前目录下的文件名
set filepath="node.log"

:: 设置taskkill /f /pid !pid!
for /f "tokens=1-5" %%a in ('netstat -ano ^| findstr LISTENING ^| findstr ":%port%"') do (
    if "%%e%" == "" (
        set pid=%%d
    ) else (
        set pid=%%e
    )
    echo !pid! service is running
	taskkill /f /pid !pid!
	goto delefile
	echo ===================
)

:: 查看是否有某个文件并将其删除,并检查
:delefile
if exist %filepath% (
	echo %filepath% is exist
	del %filepath%
	goto delefile
) else (
	echo %filepath% is not exist
)

:: 启动node服务,不同的情况不同设置 注意不同的项目有不同的路径
start /b java -jar selenium-server-standalone-2.53.1.jar -Dwebdriver.chrome.driver="driver/chromedriver.exe" -browser browserName="chrome" -log node.log

补充:

bat通常运行时会有cmd.exe窗口,使用start /b命令去运行bat文件,还是会有窗口,那么下面来处理下:


借鉴vbs里的方案

当然bat里有对应隐藏窗口的命令,在代码头部加上就可以了。 

  @echo off 
  if "%1" == "h" goto begin 
  mshta vbscript:createobject("wscript.shell").run("%~nx0 h",0)(window.close)&&exit 
  :begin 
  :: 注释:下面操作业务的代码。

直接写一个vbs脚本

在bat文件的相同目录下新建一个记事本,里面输入,然后将文件命名修改为`xxx.vbs`: 

  DIM objShell set objShell=wscript.createObject("wscript.shell") 
  iReturn=objShell.Run("cmd.exe /C D:\reStrat.bat", 0, TRUE)   

 简单点

  Set ws = CreateObject("Wscript.Shell") 
  ws.run "cmd /c c:\reStart.bat",0 

或者

CreateObject("WScript.Shell").Run "cmd /c c:\reStart.bat",0 

注意:之前有接触vb的人都知道,这种写法很多杀软报毒, 需要替换参数0,最后那个0是指窗口参数,

用法为:

  0 隐藏窗口并激活另一窗口。 
  1 激活并显示一个窗口。若窗口是最小化或最大化,则恢复到其原来的大小和位置。 
  2 激活窗口并以最小化显示该窗口。 
  3 激活窗口并以最大化显示该窗口。 
  4 按窗口最近的大小和位置显示。活动窗口保持活动。 
  5 以当前大小和位置激活并显示窗口。 
  6 最小化指定窗口并激活按 Z 序排序的下一个顶层窗口。 
  7 最小化显示窗口。活动窗口保持活动。 
  8 以当前状态显示窗口。活动窗口保持活动。 
  9 激活并显示窗口。若窗口是最小化或最大化,则恢复到原来的大小和位置。在还原应用程序的最小化窗口时,应指定该标志。 

 

你可能感兴趣的:(Selenium,Windows,自动化测试)