java+selenium-3.9.1多线程 打开连接截取屏幕截图
废话不多说上代码:(我是用的chrome举得例子哈)
第一步,需要chromedriver.exe 目的和调起chrome 浏览器打开连接,chromedriver.exe的版本与你的chrome版本一致才行,放一张版本对照图

下载chromedriver连接http://chromedriver.storage.googleapis.com/index.html
第二步:上代码
package src;
import java.io.File;
import java.net.URL;
import java.text.SimpleDateFormat;
import java.util.Date; import org.openqa.selenium.By;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.Platform;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;
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 WebDriverUtilimplementsRunnable{
public final String ROOT_PATH = System.getProperty("user.dir"); // 获取工作目录路径
public static final SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSSS");
public WebDriver driver = null; // 打开URL连接
public void open() {
// System.setProperty("webdriver.chrome.driver",this.ROOT_PATH+"/dirver/chromedriver.exe");//指定驱动路径
// 选择执行对象,版本信息,以及系统类型
DesiredCapabilities ffDesiredcap= new DesiredCapabilities("chrome", "75.0.3770.142", Platform.WINDOWS);
try{
this.driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"),ffDesiredcap);
this.driver.get(path);
this.driver.manage().window().maximize();
} catch (Exception e) {
System.out.println(Thread.currentThread().getId()+" 错误 !!!");
e.printStackTrace();
}
} /**
* 截取屏幕
* @param fileName
*/
public void captureScreenshot() {
String dirName = "e:/test";
if (!(new File(dirName).isDirectory())) {
new File(dirName).mkdir();
}
SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMdd");
String date = sdf.format(new Date());
TakesScreenshot tsDriver = (TakesScreenshot) this.driver;
File saveImage = new File(dirName + File.separator + date + "_" + fileName==null?"":fileName + ".png");
tsDriver.getScreenshotAs(OutputType.FILE).renameTo(saveImage);
}
}
首先上面这个代码是一个单独的类
想使用多线程并发打开连接,就得在多线程,每个线程内去进行以下操作
WebDriverUtil webDriverUtil = new WebDriverUtil();
webDriverUtil.open("file:///E:\\css3_button33\\index.html");
webDriverUtil.captureScreenshot("as"); 注意:必须在多线程每个线程内去实例化调用
还没完,解释一下:
http://localhost:4444/wd/hub 是固定的url,服务端url,
ffDesiredcap 是执行浏览器对象
RemoteWebDriver(new URL("http://localhost:4444/wd/hub"),ffDesiredcap)
需要服务端去监听4444 端口,执行selenium-server-standalone-3.9.1.jar程序
链接:https://pan.baidu.com/s/1j7sKkm2FlNumYVjWSBtbCw 去下载 selenium-server-standalone-3.9.1.jar
提取码:q8oi
下载下来 执行, selenium-server-standalone-3.9.1.jar 当前所在的目录下执行这个jar 命令下面执行
java -Dwebdriver.chrome.driver="E:\test\chromedriver.exe" -jar selenium-server-standalone-3.9.1.jar
执行完了之后,为了检测是否监听了4444端口后可以成功调用chrome浏览器,打开链接 http://localhost:4444/wd/hub/static/resource/hub.html

点击ok,会打开chrome浏览器一个窗口,恭喜你成功了
java+selenium-3.9.1多线程 打开连接截取屏幕截图的更多相关文章
- java+selenium打开浏览器实现后台静默运行
简介:java selenium搭建无界面浏览器 PhantomJS是一个基于Webkit的"无界面"(headless)浏览器,它会把网站加载到内存并执行页面上的JavaScri ...
- 第九节:详细讲解Java中的泛型,多线程,网络编程
前言 大家好,给大家带来详细讲解Java中的泛型,多线程,网络编程的概述,希望你们喜欢 泛型 泛型格式:ArrayList list= new ArrayList(); ArrayList list= ...
- 《手把手教你》系列技巧篇(二十三)-java+ selenium自动化测试-webdriver处理浏览器多窗口切换下卷(详细教程)
1.简介 上一篇讲解和分享了如何获取浏览器窗口的句柄,那么今天这一篇就是讲解获取后我们要做什么,就是利用获取的句柄进行浏览器窗口的切换来分别定位不同页面中的元素进行操作. 2.为什么要切换窗口? Se ...
- 《手把手教你》系列技巧篇(四十四)-java+ selenium自动化测试-处理https 安全问题或者非信任站点-下篇(详解教程)
1.简介 这一篇宏哥主要介绍webdriver在IE.Chrome和Firefox三个浏览器上处理不信任证书的情况,我们知道,有些网站打开是弹窗,SSL证书不可信任,但是你可以点击高级选项,继续打 ...
- 《手把手教你》系列基础篇(八十六)-java+ selenium自动化测试-框架设计基础-Log4j实现日志输出(详解教程)
1.简介 自动化测试中如何输出日志文件.任何软件,都会涉及到日志输出.所以,在测试人员报bug,特别是崩溃的bug,一般都要提供软件产品的日志文件.开发通过看日志文件,知道这个崩溃产生的原因,至少知道 ...
- javax.transaction.xa.XAException: java.sql.SQLException: 无法创建 XA 控制连接。(SQL 2000,SQL2005,SQL2008)
javax.transaction.xa.XAException: java.sql.SQLException:无法创建 XA 控制连接.错误: 未能找到存储过程'master..xp_sqljdbc ...
- Mybatis 打开连接池和关闭连接池性能对比
1 创建数据库表 -- phpMyAdmin SQL Dump -- version 4.2.11 -- http://www.phpmyadmin.net -- -- Host: localhos ...
- Electorn(桌面应用)自动化测试之Java+selenium实战例子
基于electorn的桌面应用,网上相关资料较少.所有记录一下.使用java+selenium+testng对该类型应用的自动化测试方法. 代码样例 package com.contract.web. ...
- 【java+selenium】网易云音乐刷累计听歌数
背景应该是在去年的时候,刷知乎看到一个问题,大概是说怎么刷网易云音乐个人累计听歌数,然后有一个高赞回答,贴了一段js代码,直接在浏览器console执行就可以了.当时试了下,直接一下子刷了有好几万.悲 ...
随机推荐
- Java中synchronized关键字你知道多少
1.什么是synchronized 我们将其理解为同步锁,可以实现共享资源的同步访问,解决线程并发的安全问题.synchronize翻译成中文:同步,使同步.synchronized:已同步. 1.1 ...
- java学习之- 线程继承Thread类
标签(空格分隔): 线程 在java.lang包中有个Thread子类,大家可以自行查阅文档,及范例: 如何在自定义的代码中,自定义一个线程呢? 1.通过对api的查找,java已经提供了对线程这类事 ...
- deepin 15.11 成功安装 jupyter notebook
系统环境: OS:deepin 15.11(均为系统默认配置) Anaconda Distribution 64位(x86)安装程序(517 MB) Jupyter 官方提供三种安装方式:conda. ...
- 水果机抽奖(CocosCreator)
推荐阅读: 我的CSDN 我的博客园 QQ群:704621321 一.前言 在前面给大家分享了大转盘的抽奖方式,这是现在游戏使用较多的一种抽奖方式,今天给大家介绍另一抽奖方式--水果 ...
- 利用peerjs轻松玩转webrtc
随着5G技术的推广,可以预见在不久的将来网速将得到极大提升,实时音视频互动这类对网络传输质量要求较高的应用将是最直接的受益者.而且伴随着webrtc技术的成熟,该领域可能将成为下一个技术热点,但是传统 ...
- Hadoop HA Hbase启动报UnknownHostException: mycluster
Hadoop HA 搭建hbase启动时只有HMaster起来,HRegionServer没有起来 查看报错信息为: 2019-08-31 19:17:14,212 ERROR [main] regi ...
- 容器的进程与namespace、rootfs
一:容器是什么 容器的本质是一种特殊的进程. 在linux容器中有三个重要的概念:Namespace.Cgroups.rootfs. Namespace做隔离,让进程只能看到Namespace中的世界 ...
- Mysql死锁如何排查:insert on duplicate死锁一次排查分析过程
前言 遇到Mysql死锁问题,我们应该怎么排查分析呢?之前线上出现一个insert on duplicate死锁问题,本文将基于这个死锁问题,分享排查分析过程,希望对大家有帮助. 死锁案发还原 表结构 ...
- 牛客多校第五场 F take 期望转化成单独事件概率(模板) 树状数组
链接:https://www.nowcoder.com/acm/contest/143/F来源:牛客网 Kanade has n boxes , the i-th box has p[i] proba ...
- centos 6.8 下没有yum命令解决方法(报错: -bash: yum: command not found)
1.去 http://mirrors.163.com/centos/6/os/x86_64/Packages/ 地址下载4个rpm安装包:python-iniparse-0.3.1-2.1.el6.n ...