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

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

【我这边用的是IDEA整合,创建 springboot 或者 maven 项目都可以嗷~】

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

<!--selenium-java-->
<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>4.0.0</version>
</dependency>
<!-- selenium-api与 selenium-java 版本要一致 -->
<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-api</artifactId>
    <version>4.0.0</version>
</dependency>

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

        方式一:在浏览器输入地址: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 找不到的情况。

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

<properties>
    <java.version>1.8</java.version>
    <selenium.version>4.0.0</selenium.version>
</properties>

<dependencies>
    <!--selenium-java-->
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-java</artifactId>
        <version>${selenium.version}</version>
    </dependency>
    <!-- 与 selenium-java 版本要一致 -->
    <dependency>
        <groupId>org.seleniumhq.selenium</groupId>
        <artifactId>selenium-api</artifactId>
        <version>${selenium.version}</version>
    </dependency>

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

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

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

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

  • 2
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值