浏览器复用及cookie复用(笔记)

1、浏览器复用

代码:

package com.ceshiren;

import org.junit.jupiter.api.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.chrome.ChromeOptions;

public class BrowserReuse {

@Test
void browserReuse() throws InterruptedException {

    ChromeOptions chromeOptions = new ChromeOptions();
    chromeOptions.setExperimentalOption("debuggerAddress","localhost:9222");
    WebDriver driver = new ChromeDriver(chromeOptions);

// driver.get(“WeCom”);
Thread.sleep(3000);
driver.findElement(By.xpath(“//*[text()=‘从其他部门移入’]”)).click();
}
}

2、cookie复用

代码:

package cookies;

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;

import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.Cookie;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;

import java.io.File;
import java.io.IOException;
import java.time.Duration;
import java.util.HashMap;
import java.util.List;
import java.util.Set;

public class CookiesTest {

private static WebDriver driver;
private static WebDriverWait wait;
private static ObjectMapper mapper;

//开始
@BeforeAll
static void setUp(){
    driver = new ChromeDriver();
    wait = new WebDriverWait(driver,Duration.ofSeconds(30));
    mapper = new ObjectMapper(new YAMLFactory());
}

//结束
@AfterAll
static void tearDown(){
    driver.quit();
}
//保存cookie
@Test
void addCookies() throws IOException {

    driver.get("https://work.weixin.qq.com/wework_admin/loginpage_wx");
    wait.until(ExpectedConditions.urlContains("https://work.weixin.qq.com/wework_admin/frame"));
    //获取cookie放入集合
    Set<Cookie> cookies = driver.manage().getCookies();
    //将cookie值写入yaml文件

    mapper.writeValue(new File("src/test/resources/cookies/cookieInfo.yaml"),cookies);
}
//读取cookie
@Test
void getCookies() throws IOException {
    driver.get("https://work.weixin.qq.com/wework_admin/loginpage_wx");
    //1、从yaml文件中读取cookie信息
    TypeReference<List<HashMap<String,Object>>> typeReference = new TypeReference<List<HashMap<String, Object>>>() {};
    List<HashMap<String,Object>> cookies = mapper.readValue(new File("src/test/resources/cookies/cookieInfo.yaml"),typeReference);
    //2、将读取的cookie信息添加到浏览器
    cookies.stream().forEach(
            (cookie) -> driver.manage().addCookie(
                    new Cookie(cookie.get("name").toString(),cookie.get("value").toString())
            )
    );
    //3、刷新页面
    driver.navigate().refresh();
}

}