AppiumForWindows 菜鸟计划(四)启动服务
来源:互联网 发布:unity3d实现场景漫游 编辑:程序博客网 时间:2024/06/11 02:22
看到了那个硕大的三角了么,启动服务就是点它,别犹豫,点吧。
查看主页面文件MainWindowVM.xaml,可以看到启动按钮:
Command="{Binding LaunchCommand}"
说明该按钮绑定了LaunchCommand,查找:
public ICommand LaunchCommand { get { return _LaunchCommand ?? (_LaunchCommand = new RelayCommand(() => _ExecuteLaunchCommand(), () => _CanExecuteLaunchCommand())); } }
继续查看:
private void _ExecuteLaunchCommand() { if (_AppiumEngine.IsRunning) { _AppiumEngine.Stop(); } else { _AppiumEngine.Start(); } }
接着我们就找到了真正执行启动服务的地方了:
public void Start() { //setup runner AppiumServerRunner setup = new AppiumServerRunner(this._NodePath, this._AppiumPackageFolder, _Settings); // setup basic process info var appiumServerProcessStartInfo = new ProcessStartInfo(); appiumServerProcessStartInfo.WorkingDirectory = setup.WorkingDirectory; appiumServerProcessStartInfo.FileName = setup.Filename; appiumServerProcessStartInfo.Arguments = setup.GetArgumentsCmdLine() + " --log-no-color"; appiumServerProcessStartInfo.RedirectStandardOutput = true; appiumServerProcessStartInfo.RedirectStandardError = true; appiumServerProcessStartInfo.CreateNoWindow = true; appiumServerProcessStartInfo.UseShellExecute = false; //set up the process and allow the thread to start it _AppiumServerProcess = new Process(); _AppiumServerProcess.StartInfo = appiumServerProcessStartInfo; _AppiumServerProcess.OutputDataReceived += _Process_OutputDataReceived; _AppiumServerProcess.ErrorDataReceived += _Process_ErrorDataReceived; this._ServerExitMonitorThread = new Thread(() => { _FireOutputData("Starting Node Server"); _OnRunningChanged(true); this._AppiumServerProcess.Start(); this._AppiumServerProcess.BeginOutputReadLine(); this._AppiumServerProcess.BeginErrorReadLine(); this._AppiumServerProcess.WaitForExit(); _OnRunningChanged(false); _FireOutputData("Node Server Process Ended"); }); this._ServerExitMonitorThread.Name = "Server Exit Monitor"; this._ServerExitMonitorThread.Priority = ThreadPriority.BelowNormal; this._ServerExitMonitorThread.Start(); }
额,整体来说就是new 一个ProcessStartInfo,各种初始化,各种赋值,然后交给新new的 Process,再然后起一个Thread,再在然后,执行……
appiumServerProcessStartInfo的详细信息:
如果仔细看上边的代码,就会发现,其实启动和停止走的是同一条路,只不过通过if (_AppiumEngine.IsRunning)进行判断,结束自然调用的就是stop了,没啥可说的了……
public void Stop() { if (IsRunning && null != _ServerExitMonitorThread && _ServerExitMonitorThread.IsAlive && null != _AppiumServerProcess) { _AppiumServerProcess.OutputDataReceived -= _Process_OutputDataReceived; _AppiumServerProcess.ErrorDataReceived -= _Process_ErrorDataReceived; _AppiumServerProcess.Kill(); _AppiumServerProcess.Dispose(); _AppiumServerProcess = null; _FireOutputData("Killed Node Server."); _OnRunningChanged(false); } }
0 0
- AppiumForWindows 菜鸟计划(四)启动服务
- AppiumForWindows 菜鸟计划(三)程序启动过程
- AppiumForWindows 菜鸟计划(五)uiautomatorviewer
- AppiumForWindows 菜鸟计划(一)Appium 材料包
- AppiumForWindows 菜鸟计划(二)源码环境搭建及代码结构
- appiumforwindows的简单安装和启动(安卓)
- Dubbo实战(四)服务启动依赖检查配置
- linux菜鸟(me)的一周计划
- 菜鸟学JDBC(四)
- 菜鸟练习PAT(四)
- 菜鸟入门C#(四)
- Ardunio菜鸟教程(四)
- 四步轻松启动svnserve服务
- 服务的四种启动方式
- Pomelo 新手计划(四)
- 必须使用系统帐户启动任务计划服务
- service服务(启动服务)
- java程序员菜鸟进阶(四)oracle基础详解(四)oracle开启和关闭服务程序——解决安装oracle占用大量内存
- 移动App的REST API设计实践
- ubuntu下su与su -命令简要分析
- java多态
- UFLDL学习笔记3——Softmax Regression
- 2进制转8进制,8进制转10进制,8进制转16进制
- AppiumForWindows 菜鸟计划(四)启动服务
- 说说JSON和JSONP,也许你会豁然开朗
- 三分钟教你学Git(十三) - 二分查找
- 如何判断技术人员水平高低
- Lua批量删除新浪微博中的微博批量删除
- pdf文件怎么修改图片
- viewWillLayoutSubviews
- ARM与X86架构对比区别
- 调用系统照相机录像和拍照(类微信,QQ)