栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

1.0、java-整合selenium实现自动化测试、以及启动报错解决

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

1.0、java-整合selenium实现自动化测试、以及启动报错解决

1.0、java-整合selenium实现自动化测试、以及启动报错解决

第一步:创建一个maven项目或者springboot项目都可以,在pom.xml中导入selenium相关依赖,这个依赖其实有一点问题,继续往下看我会详细解释:


    org.seleniumhq.selenium
    selenium-java
    4.0.0



    org.seleniumhq.selenium
    selenium-api
    4.0.0

第二步:查看一下自己浏览器版本号,【注意】这一步非常重要

        方式一:在浏览器输入地址:chrome://version 进行查看

        方式二:点击浏览器设置,查看浏览器版本号

第三步:进入selenium官网

        安装浏览器驱动 | Selenium 如下图:安装驱动,找到自己使用的浏览器(Edge、火狐、IE、谷歌 等),点击下载进入。

        进去找到和自己浏览器版本号一样的版本点击下载然后解压,【注意版本号一定要和自己浏览器的版本一样才可以,不然到时候会报错】

         解压后的文件应该是edgedriver_win64,点进去会看到有一个msedgedriver.exe文件。

        我是将edgedriver_win64直接放在D盘下。这个文件的位置可以自己随意放置,只要清楚放在哪就可以。

第四步:我找了一份QQ自动测试代码来测一测,创建一个SeleniumTest.java文件如下:

package com.hkl.test;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.edge.EdgeDriver;

public class SeleniumTest {

    public static WebDriver driver;

    public static void main(String[] args) throws InterruptedException {
        System.setProperty("webdriver.edge.driver", "D:\edgedriver_win64\msedgedriver.exe");

        driver = new EdgeDriver();
        
        //跳转到qq注册界面
        driver.get("https://ssl.zc.qq.com/v3/index-chs.html");
        driver.manage().window().maximize();
        Thread.sleep(2000);

        //输入昵称
        driver.findElement(By.id("nickname")).sendKeys("123456");

        //输入密码
        driver.findElement(By.id("password")).sendKeys("1234567588xxx");

        //输入手机号
        driver.findElement(By.id("phone")).sendKeys("456789125476");

        //输入验证码
        driver.findElement(By.id("code")).sendKeys("1234");

        //同意条款
        driver.findElement(By.className("checkbox")).click();
        Thread.sleep(2000);

        //提交注册
        driver.findElement(By.id("get_acc")).click();

    }
}

        解释一下:主函数中用System.setProperty是设置一下之前自己msedgedriver.exe安装的位置。

第五步:启动SeleniumTest.java主函数,发现报错了Exception in thread "main" java.lang.NoClassDefFoundError: org/openqa/selenium/internal/FindsById

说是找不到这个包,如下所示:

        讲实话这里一开始,我觉得就是导入的selenium版本太高或者太低导致包导进来不全,

从而导致启动后找不到某些包某些类。

        但是在我改了好几个版本之后才发现问题没那么简单,

不管我改成较新的版本还是降低版本,启动之后总是会找不到各种包。

        后来查了很多资料,才发现虽然我们导入的是4.0.0版本的selenium

但是却发现实际导入的是3.x版本的selenium如下图所示:

原因是springboot的pom坐标配置覆盖了自己写的pom坐标,所以才会出现包  org/openqa/selenium/internal/FindsById 找不到的情况。

知道问题所在,接下来就是让自己的坐标覆盖默认的坐标!改动如下:


    1.8
    4.0.0



    
    
        org.seleniumhq.selenium
        selenium-java
        ${selenium.version}
    
    
    
        org.seleniumhq.selenium
        selenium-api
        ${selenium.version}
    

改动的地方为上述代码的:第3行、第11行、第17行

改动后可以检查一下,确实!实际导入的包都是4.0.0了!

第六步:改动后程序正常运行!

【注意】该问题只有在selenium与springboot一起使用时才会出现嗷~!

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/777192.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号