【简码短链】使用Selenium实现UI自动化测试

环境准备 Chrome浏览器 版本为版本 129.0.6668.90(正式版本) (64 位)129版本的Chrome浏览器的驱动,将webdriver放到jdk所在的bin目录下 在命令行中输入:chromedriver验证是否成

环境准备

Chrome浏览器 版本为版本 129.0.6668.90(正式版本) (64 位)

129版本的Chrome浏览器的驱动,将webdriver放到jdk所在的bin目录下
在命令行中输入:chromedriver验证是否成功

打开IDEA,创建Maven项目,在pom.xml导入所需要的依赖包

    <dependencies>
        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>4.22.0</version>
        </dependency>
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.16.1</version>
        </dependency>
        <dependency>
            <groupId>org.junit.jupiter</groupId>
            <artifactId>junit-jupiter</artifactId>
            <version>5.10.2</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-suite</artifactId>
            <version>1.8.2</version>
            <scope>test</scope>
        </dependency>
    </dependencies>


创建common包用于存在公共的类/方法
Tests目录下用来存放测试用例

对每个页面进行测试时都需要先创建浏览器驱动对象,因此可以把创建浏览器驱动的方法放到common下面,并使用单例模式保证浏览器驱动只被创建一次
添加隐式等待,确保页面元素能够渲染出来

public class AutoTestUtils {
   
   
    public ChromeDriver driver;
    // 获取驱动对象
    public ChromeDriver getChromeDriver(){
   
   
        if (driver == null){
   
   
            driver = new ChromeDriver();
            driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(10));
            chromeDriver.manage().window().maximize();
        }
        return driver;
    }
}

添加屏幕截图功能

    public static List<String> getTime(){
   
   
        SimpleDateFormat sim1 = new SimpleDateFormat("yyyyMMdd-HHmmssSS");
        String filename = sim1.format(System.currentTimeMillis());

        SimpleDateFormat sim2 = new SimpleDateFormat("yyyyMMdd");
        String dirname = sim2.format(System.currentTimeMillis());
        List<String> list = new ArrayList<>();
        list.add(dirname);
        list.add(filename);
        return list;
    }
    public static void getScreenShor(String str) throws IOException {
   
   
        List<String> list = getTime();
        String filename = "./src/test/java/com/hyacinth/shortlinkAutoTest/"+list.get(0)+"/"+str+"_"+list.get(1)+".png";
        File srcfile = driver.getScreenshotAs(OutputType.FILE);
        FileUtils.copyFile(srcfile,new File(filename));
    }

登录测试

测试用例页面如下:

首先在登录页面测试类中定义一个浏览器驱动对象,用来获取浏览器驱动

    public static ChromeDriver driver = getChromeDriver();

因为每次都需要打开登录页面,因此定义一个方法打开登录页面,并使用@BeforeAll注解,让测试每次开始前都打开登录页面,通过调用get方法,可以导航到网页,为接下来的测试准备页面环境。

    @BeforeAll
    public static void baseControl() {
   
   
        chromeDriver.get("http://127.0.0.1:5173/login");
    }

正常登录的测试:

    @ParameterizedTest
    @CsvSource({
   
   "admin,admin123456","aaa,123123123"})
    @Order(3)
    public void loginSuccess(String username,String password) throws IOException, InterruptedException {
   
   
        chromeDriver.findElement(By.xpath("//*[@id=\"app\"]/div[1]/div[1]/div[1]/form/div[1]/div[1]/div/div/div[2]/input")).clear();
        chromeDriver.findElement(By.xpath("//*[@id=\"app\"]/div[1]/div[1]/div[1]/form/div[1]/div[2]/div/div/div[2]/input")).clear();
        // 登录步骤
        chromeDriver.findElement(By.xpath("//*[@id=\"app\"]/div[1]/div[1]/div[1]/form/div[1]/div[1]/div/div/div[2]/input")).sendKeys(username);
        chromeDriver.findElement(By.xpath("//*[@id=\"app\"]/div[1]/div[1]/div[1]/form/div[1]/div[2]/div/div/div[2]/input")).sendKeys(password);
        chromeDriver.findElement(By.xpath("//*[@id=\"app\"]/div[1]/div[1]/div[1]/form/div[2]/div[2]/button")).click();

        // 对登录结果进行检测
        // 登录成功后进入我的博客页 查找里面的相关页面元素
        chromeDriver.findElement(By.xpath("//*[@id=\"app\"]/div/s

发布者:admin,转转请注明出处:http://www.yc00.com/web/1754668686a5187781.html

相关推荐

发表回复

评论列表(0条)

  • 暂无评论

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信