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 WebDriverUtil implements 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浏览器一个窗口,恭喜你成功了

 

转载于:https://www.cnblogs.com/liuxinruif0/p/11585741.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值