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 WebDriverUtilimplements
Runnable
{
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执行就可以了.当时试了下,直接一下子刷了有好几万.悲 ...
随机推荐
- Kali Linux-装机后通用配置
目录 前言 一. 网络优化 更换host 更换dns 添加源 二. 更新系统 三 .安装N卡驱动 四.修复 add-apt-repository 五.安装常用软件 安装apt自带的包 安装第三方的de ...
- 在linux系统中配置NVMe over TCP
1. 准备环境 1.1 准备linux系统 要求的linux系统可以是运行在物理机上,也可以是虚拟机上: 建议有个linux系统,一个做host,一个做target,如果资源紧张也可以把host和ta ...
- lua&C#学习整理
1.Lua中有8个基本类型分别为:nil.boolean.number.string.userdata.function.thread和table. 2.pairs 和 ipairs区别 pairs: ...
- Codeforces 246C
题意略. 思路: 我们将数组中的数字从大到小排列,分别考虑取前0 + 1,1 + 1,2 + 1.....个的情况. 所谓i + 1的意思是,取前i个的时候,同时取第[i + 1],[i + 2],. ...
- I-string_2019牛客暑期多校训练营(第四场)
题意 当a != b且a != rev(b)则认为a串与b串不相等,rev(b)表示b串的反串,例如rev(abcd) = dcba 给出一个串求出该串所有不相等的子串个数 题解 先利用后缀数组求出s ...
- light 1205 - Palindromic Numbers(数位dp)
题目链接:http://www.lightoj.com/volume_showproblem.php?problem=1205 题解:这题作为一个数位dp,是需要咚咚脑子想想的.这个数位dp方程可能不 ...
- 2019 HZNU Winter Training Day 14 Comprehensive Training
A - Choosing Capital for Treeland CodeForces - 219D 题意:有一颗单向边的树,要选取一个结点作为首都.要求是这个结点到其它结点,总共需要翻转的路径数量 ...
- 疯狂的bLue
疯狂的bLue Time Limit: 1000MS Memory Limit: 65536KB Submit Statistic Problem Description 众所周知神秘的 ACM 实验 ...
- 2017 计蒜之道 初赛 第五场 UCloud 的安全秘钥(中等)
每个 UCloud 用户会构造一个由数字序列组成的秘钥,用于对服务器进行各种操作.作为一家安全可信的云计算平台,秘钥的安全性至关重要.因此,UCloud 每年会对用户的秘钥进行安全性评估,具体的评估方 ...
- 【Spring】 IOC Base
一.关于容器 1. ApplicationContext和BeanFactory 2. 配置文件 XML方式 Java-configuration 方式 @Configuration 3. 初始化容器 ...