在CMD下启动vmware、Xshell连接虚拟机以及控制Chrome浏览器自动执行js登录校园网...

news/2024/11/19 5:52:13/

标题有点长,主要是写个bat出来玩玩,

(1)不用每次都手动关闭mysql服务(我不想把它设为手动启动,有强迫症)

(2)然后希望每次vmware能自动连上虚拟机

(3)以及每次Xshell都能自动启动,然后就连上虚拟机

(4)然后校园网每次都要打开,输入帐号密码什么的,才能连网,我希望它自己搞定

做完了这几步还是有点意思的,主要是浏览器还是网页的什么自动化测试,然后eclipse下项目打包成可执行的jar包

现在听我娓娓道来吧!

前面要达到的目的跟着后面的命令并无关联

(1)首先在bat里面关闭mysql服务

这个mysql的服务的关闭很简单,但是要以管理员方式执行,否则是会拒绝访问的

net stop mysql

这一步还是比较简单的

(2)在CMD里面启动虚拟机并让其打开一个操作系统的方式有如下两种,其中一种是

"D:\Program Files (x86)\VMware\VMware Workstation\vmware.exe" -x "F:\Virtual Machines\CentOS_64_minimal\CentOS 64 位.vmx"

这个方式可以打开虚拟机,但是,这里一定要有但是,它是以图形界面打开的,也就说,如果你不关掉这个图形界面这个命令将会一直处于执行状态

这样就不好了,你这飞完了翔还在这儿蹲着,不太合适,所以这个不好,那么只好采用下面的一种:

"D:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe" start "F:\Virtual Machines\CentOS_64_minimal\CentOS 64 位.vmx" nogui

这中启动方式的好处就是不用打开图形界面,直接在后台启动vmware,并打开对应的操作系统,而且执行完了这句马上可以执行下一句。

(3)cmd下延时

启动完了vmware及其对应的操作系统之后呢,我们并不能直接的用Xshell去连虚拟机,应为虚拟机开启要花一定的时间,所以呢我们需要延时40~60s钟,这个依据个人电脑的配置而决定,采用的语句为:

ping -n 60 127.0.0.1  > nul

其实我也是没有想到居然使用ping这个命令来延时,-n后面的60代表ping这个命令进行60次还是60秒来着

> nul则是不用输出ping的结果,万万没想到你居然是这种ping

(4)Xshell连接虚拟机

start "" "D:\Program Files (x86)\NetSarang\Xshell 5\Xshell.exe"  -url ssh://jack:rose@192.168.197.129:22

这条命令可以在cmd下调用Xshell直接连接虚拟机,并且在打开Xshell的图形界面之后,cmd并不会滞留在这条命令

其中jack是我的虚拟机的一个用户名

而rose则是密码

192.168.197.129:22中192.168.197.129是虚拟机的ip地址,然后22则是端口号这个都不用改,只需要你的用户密码就行

(5)直接填写校园网的帐号密码并驱动浏览器登录

这个呢是比较复杂的一个部分,如果打开网页没有连网,那么浏览器便会跳转到登录界面,

本来呢校园网的帐号密码都是记住的,这时候只要运行个js执行登录的click( )就好了,

之前的做法是用cmd上直接用chrome.exe去打开百度,然后chrome里面就会有一个插件,自动执行js

"C:\Program Files (x86)\Google\Chrome\Application\chrome.exe" www.baidu.com

这句话在cmd里面执行会使得chrome打开baidu,后然就自动执行插件

image

这些就是插件里面的所有内容,放在一个叫做HelloWorld的文件夹中,然后在chrome中添加此插件就行了

image

1.png是全智贤的图片作为图标吧

然后manifest.json是插件的主要程序

{"name": "第一个Chrome插件","manifest_version": 2,"version": "1.0","description": "我的第一个Chrome插件,还不错吧","browser_action": {"default_icon": "1.png"},"content_scripts": [{"matches": ["http://192.168.0.1/*"],"js": ["myscript.js"]}]
}

这个扩展程序也十分简单,其中"matches": [http://192.168.0.1/*],的意思是如果匹配到了这个网址的话

那么就执行下面的js里面的内容,ip是我瞎编的,我们学校的ip怎么能告诉你们呢,要脸!

myscript.js里面的内容则是:

void((function(){document.getElementById("loginname").value = "120";document.getElementById("password").value = "119";document.getElementById("action_login").click();
})())

这个js也很简单,直接就是填入帐号密码,然后呢,就是执行登录按钮。

其实这种做法也是可以的啦,但关键是我是个有情怀(强迫症),尼玛这样一搞浏览器登录校园网的帐号之后就不能自动关闭了,我受不了了。

然后在cmd下又不能让chrome自动退出,只能强行关闭进程,强行关闭进程之后呢,chrome在此打开的之后又会叨叨叨,什么异常关闭blabla

于是乎这条路也是走不通了。另外再想办法吧。

一个神奇的做法出来了,就是所谓的自动化测试了。

首先要用的工具有两个:一个是selenium,另外一个则是chromedriver_x64.exe

其中chromedriver_x64.exe是用来驱动chrome浏览器的,

而selenium我也不知道是来干嘛的,反正你往下看吧。

首先下载selenium,然后解压,里面的jar是拿来调用的

然后下载chromedriver_x64并且放在chrome.exe所在的目录下,我的是在:

C:\Program Files (x86)\Google\Chrome\Application\chrome.exe

第一个版本的程序是:

package com.test.bat;import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;public class DriveChrome {public static void main(String[] args) {// TODO Auto-generated method stub//设置访问ChromeDriver的路径System.setProperty("webdriver.chrome.driver", "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver_x64.exe");WebDriver driver = new ChromeDriver();driver.get("http://www.baidu.com/");// "http://192.168.0.1/srun_portal.php?cmd=login&switchip="是用来判断是否是校园网的登录页面// 是登录页面那么我们就要执行js,否则不执行if (driver.getCurrentUrl().startsWith("http://192.168.0.1/srun_portal.php?cmd=login&switchip=")) {//System.out.println(driver.getTitle());//System.out.println(driver.getCurrentUrl());JavascriptExecutor jse = (JavascriptExecutor)driver;jse.executeScript("document.getElementById(\"loginname\").value = \"120\"");jse.executeScript("document.getElementById(\"password\").value = \"119\"");jse.executeScript("document.getElementById(\"action_login\").click()");}driver.quit();return;}
}

这个需要你把selenium解压下的2个jar包以及解压文件夹下lib文件夹的jar都导入到java项目中,

其实这个也没啥问题,可以登录也可以关闭chrome浏览器,但是,又有但是呢,尼玛驱动chrome浏览器的chromedriver_x64.exe这个进程一直在

在我们这里很简单直接在cmd强行杀死该进程就可以了,但是他们做测试的人说,这样不行啊,测试的时候这个chromedriver_x64.exe可是要一直调用呢,

最后是在这个代码里面就把它关掉呢!

于是诞生出下面的一个版本:

package com.test.bat;import java.io.File;
import java.io.IOException;import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebDriverException;
import org.openqa.selenium.chrome.ChromeDriverService;
import org.openqa.selenium.remote.DesiredCapabilities;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.support.ui.ExpectedCondition;
import org.openqa.selenium.support.ui.WebDriverWait;public class StartChrome {public static void main(String[] args) {ChromeDriverService service = new ChromeDriverService.Builder().usingDriverExecutable(new File("C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver_x64.exe")).usingAnyFreePort().build();try {service.start();System.out.println("test");} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();}WebDriver driver = new RemoteWebDriver(service.getUrl(),DesiredCapabilities.chrome());// WebDriver driver = new ChromeDriver();driver.get("http://www.baidu.com/");// System.out.println(driver.getCurrentUrl());// 通过判断 title 内容等待搜索页面加载完毕,间隔10秒try {(new WebDriverWait(driver, 20)).until(new ExpectedCondition<Boolean>() {public Boolean apply(WebDriver d) {return d.getTitle().toLowerCase().startsWith("用户登录");}});} catch (WebDriverException e) {driver.quit();service.stop();return;}if (driver.getCurrentUrl().startsWith("http://192.168.0.1/srun_portal.php?cmd=login&switchip=")) {//System.out.println(driver.getTitle());//System.out.println(driver.getCurrentUrl());JavascriptExecutor jse = (JavascriptExecutor)driver;jse.executeScript("document.getElementById(\"loginname\").value = \"120\"");jse.executeScript("document.getElementById(\"password\").value = \"119\"");jse.executeScript("document.getElementById(\"action_login\").click()");}driver.quit();service.stop();return;}
}

这里呢chromedriver_x64.exe的执行是可以控制的,

service.start();

service.stop();

这两句话就可以解决chromedriver_x64.exe进程的打开和关闭,而且这里面还添加了浏览器加载过程中的等待

然后就是,将这个项目打包,我在eclipse中打包的是可执行的jar包。

调用这个可执行的jar包的命令为:

java -jar C:\Users\PC126\Desktop\hahaha.jar

最后虽然是可以关闭chromedriver_x64这个进程,但是呢会留下conhost.exe这个进程,这个进程只好在cmd里面删掉了

最后的bat是:

 echo 这是一个难得的注释,其实我是在胡说八道,为了多凑点字net stop mysql"D:\Program Files (x86)\VMware\VMware Workstation\vmrun.exe" start "F:\Virtual Machines\CentOS_64_minimal\CentOS 64 位.vmx" noguiping -n 60 127.0.0.1
echo ping -n 60 127.0.0.1  > nulstart "" "D:\Program Files (x86)\NetSarang\Xshell 5\Xshell.exe"  -url ssh://jack:rose@192.168.197.129:22java -jar C:\Users\PC126\Desktop\hahaha.jar"D:\Program Files (x86)\Tencent\QQ\Bin\QQ.exe"taskkill /f /t /im conhost.exe

 

本篇纯属好玩


http://www.ppmy.cn/news/377812.html

相关文章

机器学习路线图

机器学习路线图(附资料) 2016-03-01 龙心尘 && 寒小阳 程序人生 http://mp.weixin.qq.com/s?__bizMzA5MzY4NTQwMA&mid402926580&idx1&snde754a396f62f5659d14bb68c1d828a0&scene0#wechat_redirec 点击上方"程序人生"关注我们 1. 引言 也许你…

系统架构相关文章

转自&#xff1a; http://blog.csdn.net/wodwl/article/details/55666791 &#xff08;1&#xff09;关于负载均衡的一切 &#xff08;2&#xff09;智能广告系统架构 &#xff08;3&#xff09;twitter系统架构分析 &#xff08;4&#xff09;秒杀系统架构优化思路 &#xff0…

可扩展的列表组件

ExpandableListView(可扩展列表组件).ExpandableListView所显示的列表项应该有由ExpandableListAdapter提供。 实现ExpandableListAdapter的三种常见方式&#xff1a; 扩展BaseExpandableListAdapter 实现ExpandableListAdapter。使用SimpleExpandableListAdapter将两个List集…

备战双十一 点击率为何下降?测图一下就知道

测图是进行大促前必备工作&#xff0c;该从哪些维度去测图以及如何分析数据得出结论&#xff0c;电商侠通过这些实际案例告诉大家。 想要测好入口图&#xff0c;需要关注以下指标&#xff1a; &#xff08;1&#xff09;文案和明星大片点击率测试 &#xff08;2&#xff09;…

回头再说 004

深夜里&#xff0c;看月光斑驳的影子&#xff0c;看它们在眼前摇曳岁月就这样慢慢的从手中溜走 走得不留痕迹 每个繁华的都市背后都有一些寂寞的灵魂 在夜色下它们汇聚又分离 城市的心情&#xff0c;就在这些灵魂的手中演绎 ---《小凤直播室片花》 风 悠悠的风 悠然在这一刻晚空…

卷积神经网络(CNN)

1.定义一个卷积神经网络。 我们需要三个基本的元素来定义一个基本的卷积网络 1.卷积层 2.池化层 3.全连接层 4.输出层 卷积层 在这一层中&#xff0c;假设我们有一个6*6的图像。我们定义一个权值矩阵&#xff0c;用来从图像中提取一定的特征。 我们把权值初始化为一个…

html标签学习

这里复习一下常用的标签。 列表标签 <ul type"disc"><li>林志玲</li><li>全智贤</li> </ul><!--有序标签--> <ol type"a" start"c"><li>切格瓦拉</li><li>铁娘子</li>…

html标签之img

<!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>image tag演示</title> </head> <body><img src"./img/qzx1.jpg" alt"全智贤" title"妹子" widt…