selenium unable to set cookie,selenium 截图

selenium unable to set cookie问题

在webDriver中,在一个webDriver登录后,相应的cookies是通过登录操作被保存到一个webDriver中,运行其他webDriver时,又需要做登录操作,如果实现只登陆一次,然后共享cookies岂不是很好。

当尝试添加cookies时抛出selenium unable to set cookie错误,大多情况是在一个webDriver空域(没有访问任意一个页面)中添加cookies,我们要做的就是在赋值cookies之前保证webDriver不是一个空域,比如,让它访问一下需要共享页面的主页。

package cn.baopz.utils;

import cn.baopz.core.Authentication;
import cn.baopz.core.AuthenticationFactory;
import cn.baopz.core.LoginException;
import cn.baopz.core.WebDriverFactory;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.Cookie;
import org.openqa.selenium.WebDriver;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.util.concurrent.TimeUnit;

public class ShareCookiesTest {
    private Logger logger = LoggerFactory.getLogger(ShareCookiesTest.class);
    private WebDriver mainDriver;

    /**
     * 在执行Test方法之前,登录
     */
    @Before
    public void login() {
        mainDriver = WebDriverFactory.getChromeWebDriver();
        Authentication authentication = AuthenticationFactory.getInstance(mainDriver);
        try {
            Assert.assertTrue(authentication.check());
            try {
                TimeUnit.SECONDS.sleep(5);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        } catch (LoginException e) {
            e.printStackTrace();
            mainDriver.close();
            mainDriver.quit();
        }
    }

    /**
     * 共享cookies
     */
    @Test
    public void shareCookies() {
        WebDriver webDriver = WebDriverFactory.getChromeWebDriver();
        //访问同一个域中的地址
        webDriver.get("https://xxx.xxx.xxx");
        //cookie赋值
        for (Cookie cookie : mainDriver.manage().getCookies()) {
            logger.debug("{}:{}", cookie.getName(), cookie.getValue());
            try {
                webDriver.manage().addCookie(cookie);
            } catch (Exception e) {
                //ignore
            }
        }
        //获取资源详情
        webDriver.get("https://xxx.xxx.xxx/column/article/1234");
        try {
            TimeUnit.SECONDS.sleep(5);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        webDriver.close();
        webDriver.quit();

        mainDriver.close();
        mainDriver.quit();
    }
}

selenium 截图

Selenium截图,当selenium运行时报错,或异常时,需要记录当前页面情况,selenium提供截图

package cn.baopz.utils;

import cn.baopz.core.WebDriverFactory;
import org.apache.commons.io.FileUtils;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import java.io.File;
import java.io.IOException;
import java.util.concurrent.TimeUnit;

public class WebDriverTest {
    private Logger logger = LoggerFactory.getLogger(WebDriverTest.class);
    private WebDriver webDriver;

    @Before
    public void before() {
        webDriver = WebDriverFactory.getChromeWebDriver();
    }

    @Test
    public void takesScreenshotTest() {
        webDriver.get("https://blog.csdn.net/bpz31456/article/details/81875735");
        File source = ((TakesScreenshot) webDriver).getScreenshotAs(OutputType.FILE);
        try {
            Files.copy(source.toPath(), new FileOutputStream(new File("C:\\Users\\baopz\\Desktop\\test\\image\\xx\\1.png")));
        } catch (IOException e) {
            e.printStackTrace();
        }
        try {
            TimeUnit.SECONDS.sleep(5);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

    @After
    public void after() {
        webDriver.close();
        webDriver.quit();
    }

}

猜你喜欢

转载自blog.csdn.net/bpz31456/article/details/81875735
今日推荐