在学习selenium的过程中发现一个问题,各种博客/教程都是教人用selenium的quit()和close()方法关闭浏览器。

但这不是我要的结果。这两个方法的前提是,用webdriver打开浏览器,执行脚本之后再关闭已经用webdriver打开的浏览器。

我的前提条件:在用webdriver打开浏览器之前先检查是否有浏览器已经打开,如果有,先关闭这些浏览器,然后执行webdriver脚本。

这个也是借鉴于HP QTP(HP UFT),当初QTP遇到已经有浏览打开就不知道哪个浏览器是它要运行的,所以每次在运行qtp之前先关闭所有浏览器。

虽然selenium不存在这个问题,但还是习惯每次运行selenium脚本之前关闭所有浏览器。

现在已经被MF收购了,该叫MF UFT了。MF于2018年收购了HP的UFT和loadrunner。

据说MF还租用了之前HP在上海张江高科金科路VIA2626号?的办公室。

回到正题,以下思路就是用java rumtime执行windows命令查找进程/关闭进程。

总感觉这不是最好的方法,但却是我目前知道的唯一方法(不知道selenium到底有没有自己的方法)。

贴上代码,以下代码只是关闭firefox,后期会继续完善:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List; public class WindowsProcess { public static void main(String[] args) throws InterruptedException {
WindowsProcess winp = new WindowsProcess();
winp.killProcess("firefox.exe");
} public void killProcess(String processName) throws InterruptedException {
try {
String line;
Process p = Runtime.getRuntime().exec("tasklist.exe");
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null) {
System.out.println(line);
if (line.contains("firefox.exe")) {
System.out.println("Firefox is found.");
Runtime.getRuntime().exec("taskkill /F /IM " + processName);
}
}
} catch (Exception e) {
e.printStackTrace();
}
}
}

这里面用到了java的runtime类和它的getruntime方法,Process类,inpustring类。

getruntime的返回值是i一个runtime对象,process是一个抽象类。

关于这三个类的java官方API 文档:

https://docs.oracle.com/javase/8/docs/api/

关于runtime类的一些参考文章:

https://www.cnblogs.com/mingforyou/p/3551199.html

https://www.cnblogs.com/slyfox/p/7272048.html

Selenium Java关闭浏览器的更多相关文章

  1. Selenium+java操作浏览器cookies

    描述:登录CSDN,将登录信息cookies保存到文件,再次打开网页时,直接利用文件中的数据登录. 1. 获取cookies并保存到文件 步骤: ① 打开CSDN的登录界面: ② 填写用户名和密码: ...

  2. Selenium+java - Edge浏览器启动

    写在前面 随着win10系统的普及,使得Edge浏览器得到广泛使用.从自动化角度看,自然微软也一直不断提供着支持服务,系统版本更新,对应的Edge浏览器版本也在更新,当然对应的驱动版本也会发生变化. ...

  3. selenium+java实现浏览器前进、后退和刷新

  4. java模拟浏览器包selenium整合了htmlunit,火狐浏览器,IE浏览器,opare浏览器驱

    //如果网页源码中有些内容是js渲染过来的,那你通过HttpClient直接取肯定取不到,但是这些数据一般都是通过异步请求传过来的(一般都是通过ajax的get或者post方式).那么你可以通过火狐浏 ...

  5. selenium java 浏览器操作

    环境搭建 selenium 2.53 selenium-java-2.53.0.jar selenium-java-2.53.0-srcs.jar 原代码包 拷贝的工程lib下,做build path ...

  6. (四)selenium打开和关闭浏览器

    一.Selenium简介 Selenium3.0主要变更特性: ①移除seleniumRC ②FireFox和Safari推出了自己的driver(geckodriver 和 Safaridriver ...

  7. selenium java 自动化测试 基于火狐浏览器/谷歌浏览器

    :环境 java1.8+ieda 直接上代码 pom.xml <?xml version="1.0" encoding="UTF-8"?> < ...

  8. Selenium 3----窗口截图+关闭浏览器

    窗口截图 get_screenshot_as_file() 自动化用例是由程序执行的,因此有时候打印的错误信息并不十分明确.如果在脚本执行出错的时候能对当前窗口截图保存,那么通过图片就可以非常直观地看 ...

  9. Python+selenium打开或关闭浏览器

    Python+selenium打开或关闭浏览器 一.打开或关闭火狐浏览器 1.       初始化一个webdriver实例对象driver,然后打开和关闭firefox浏览器.要用selenium打 ...

随机推荐

  1. Vagrant 创建虚拟环境

    1. 添加box vagrant box add --name centos6.8/cms boxname.box 2.初始化admin环境 vagrant init centos6.8/cms ad ...

  2. Centos上SSH连接过慢原因

    最近发现机房里有些centos机器进行ssh登陆非常慢且会超时,经过查看发现时GSPI认证过慢问题造成: 使用 ssh -v 发现 debug1: SSH2_MSG_SERVICE_ACCEPT re ...

  3. 在MySQL中快速的插入大量测试数据

    很多时候为了测试数据库设计是否恰当,优化SQL语句,需要在表中插入大量的数据,怎么插入大量的数据就是个问题了. 最开始想到的办法就是写一个程序通过一个很大的循环来不停的插入,比如这样: int i = ...

  4. C++中字符数组与string的相互转换

    字符数组转化成string类型char ch [] = "ABCDEFG";string str(ch);//也可string str = ch;或者char ch [] = &q ...

  5. hdu5000 Clone dp+大数

    After eating food from Chernobyl, DRD got a super power: he could clone himself right now! He used t ...

  6. 什么是pytorch(2Autograd:自动求导)(翻译)

    Autograd: 自动求导 pyTorch里神经网络能够训练就是靠autograd包.我们来看下这个包,然后我们使用它来训练我们的第一个神经网络. autograd 包提供了对张量的所有运算自动求导 ...

  7. windows openssh server 安装试用

    使用Windows的可能会知道win10 的已经包好了openssh 服务,但是对于其他机器win 7 windows 2008 ,就需要其他的方法了 还好powershell 团队开发了支持wind ...

  8. Docker之 默认桥接网络与自定义桥接网卡

    docker引擎会默认创建一个docker0网桥,它在内核层连通了其他的物理或虚拟网卡,这就将所有容器和宿主机都放到同一个二层网络. 1. docker如何使用网桥 1.1 Linux虚拟网桥的特点 ...

  9. MySQL 命令(导出数据):mysqldump

    官方网址:https://dev.mysql.com/doc/refman/8.0/en/mysqldump.html

  10. ClassNotFoundException与NoClassDefFoundError异常

    方法 loadClass()抛出的是 java.lang.ClassNotFoundException异常(一般是jar冲突或者没有引入jar):方法 defineClass()抛出的是 java.l ...