Selenium java自动化

这篇具有很好参考价值的文章主要介绍了Selenium java自动化。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

1. Selenium的安装

2. 了解自动化和selenium

2.1 什么是自动化以及为什么要做

自动化测试能够代替一部分的手工测试。自动化测试能够提高测试效率。
随着功能的增加,版本越来越多,版本回归的压力也越来越大,所以仅仅通过人工测试来回归所有的版本肯定是不现实的,所以我们需要借助自动化来进行回归

2.2为什么选择selenium作为我们的文本自动化工具

选择它肯定是有原因的.

  • 1开源免费
    1. 支持多浏览器。如Chrome、Firefox、IE、edge、Safari…
  • 3)支持多系统。如Linux、Windows、MacOS
  • 4)支持多语言。如java、python…
    1. selenium包底层有很多可使用的API

2.3 环境部署

  • selenium工具包
  • Chrome浏览器
  • Chromedriver谷歌驱动
  • java版本最低要求8

2.4什么驱动,驱动的工作原理。

汽车有驱动,两轮驱动、四轮驱动 可以让汽车跑起来计算机里也有驱动程序,可以驱动计算机和设备工作起来打开浏览器也需要驱动。
人工测试情况下(人工手动的驱动打开浏览器)自动化来说 ,代码不能够直接打开浏览器,需要借助驱动程序来协助打开浏览器。
代码可以驱使驱动来打开浏览器。
selenium 驱动 浏览器三者之间的关系,如下图:

Selenium java自动化
如下图,浏览器驱动本质上是一个服务器

Selenium java自动化

2.5一个简单的自动化演示

需求:打开百度搜索"scdn"提交

    // 
    public void dilireba() throws InterruptedException {
        Thread.sleep(3000);
        driver.get("https://www.baidu.com");
        driver.findElement(By.cssSelector("#kw")).sendKeys("csdn");
        Thread.sleep(3000);
        driver.findElement(By.cssSelector("#su")).submit();
        //driver.findElement(By.cssSelector("#su")).click();
    }

3. 掌握selenium的基础语法

3.1)元素的定位

    // 需求: 测试定位元素的 方式
    public void findElement()
    {
        // 方式一:
        // 定位元素并打印文本信息
        String xpath = driver.findElement(By.xpath("//*[@id=\"hotsearch-content-wrapper\"]/li[1]/a/span[2]")).getText();
        System.out.println(xpath);

        // 方式二:
        String css = driver.findElement(By.cssSelector("#hotsearch-content-wrapper > li:nth-child(1) > a > span.title-content-title")).getText();
        System.out.println(css);

    }

3.2) 元素的操作

    // 元素的操作
    // 点击:click
    // 提交:submit
    // 模拟按键输入:send_keys
    // 清楚对象输入的文本内容 : clear()
    // 获取文本: gettext
    // 获取元素属性: getAttribute() 
    public void sendkeys_test() throws InterruptedException {

        driver.findElement(By.cssSelector("#kw")).sendKeys("" +
                "今天天气好啊");
        driver.findElement(By.cssSelector("#kw")).click();
        Thread.sleep(3000);
        driver.findElement(By.cssSelector("#kw")).clear();
        Thread.sleep(3000);
        driver.findElement(By.cssSelector("#kw")).sendKeys("" +
                "明天天气也会好的");
        Thread.sleep(2000);
    }

3.3)等待

    // 需求: 代码的执行速度比较快,而前端页面渲染的速度相比慢一点,可能导致的结果是: 代码已经提交执行到下一步了,页面还没渲染出来,元素找不到.
    // 等待元素被渲染的三种方式:
    // 1. 强制等待
    //           让程序多等一会, 优点:语法简单 缺点:固定时间,测试时间较长.
    // 2. 隐式等待
    //           在规定的时间内,轮询等待元素出现之后就立即执行下一步,如果在规定时间内未能完成等待,则会抛出一个 NoSuchElemenExcetion 异常.
    //           优点: 节省了大量测试时间,执行效率高.  缺点: 需要等待所有的元素都展开才会执行下一步,仍然会有时间消耗.
    // 3. 显示等待
    //            强制等待可以针对某一个元素来进行测试.
    //            优点: 针对一个元素来进行等待,极大降低自动化测试时间.
    //            缺点: 写法较为复杂.
    public void wait_test() throws InterruptedException {
        // 1. 强制等待
        Thread.sleep(3000);
        // 2. 隐式等待
        driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));
        // 3. 显示等待
        WebDriverWait foo = new WebDriverWait(driver,Duration.ofSeconds(3));
        foo.until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("#su")));
    }

3.4) 信息的打印

    public void getContent_test()
    {
        String title = driver.getTitle();
        System.out.println(title);
        String url = driver.getCurrentUrl();
        System.out.println(url);
    }

3.5) 窗口切换

     public void windows_test() throws InterruptedException {
         System.out.println("----第一个窗口------");
         String curWinHandle = driver.getWindowHandle();
         System.out.println(curWinHandle);
         String title = driver.getTitle();
         System.out.println(title);
         String url = driver.getCurrentUrl();
         System.out.println(url);
         System.out.println("----第二个窗口------");
         // 1.跳转到一个页面
         driver.findElement(By.cssSelector("#hotsearch-content-wrapper > li:nth-child(1) > a > span.title-content-title")).click();
         Thread.sleep(3000);
         // 2.driver不会自动切换,需要我们切换窗口
         //  句柄是一个String类型, 获取句柄
         Set<String> windows = driver.getWindowHandles();
         String window = "";
         for(String win : windows)
         {
             System.out.println(win);
             if(win != curWinHandle)
             {
                 window=win;
             }
         }
         driver.switchTo().window(window);
          curWinHandle = driver.getWindowHandle();
         System.out.println(curWinHandle);
          title = driver.getTitle();
         System.out.println(title);
          url = driver.getCurrentUrl();
         System.out.println(url);
     }

3.6) 窗口大小的设置

    public void windowSize_test()
    {
        driver.manage().window().maximize();
        driver.manage().window().minimize();
        driver.manage().window().setSize(new Dimension(800,100));
    }


3.7) 执行JavaScript代码

    public void executeScript_test()
    {
        driver.executeScript("alert(\"hellow world\")");
    }

3.8 导航栏

selenium里提供了navigate接口来实现页面的导航

    public void navigate_test() throws InterruptedException {
        WebElement webEle = driver.findElement(By.cssSelector("#nav > div > div > ul > li:nth-child(1) > a"));
        webEle.click();
        Thread.sleep(3000);
        // 后退
        driver.navigate().back();
        Thread.sleep(3000);
        // 前进
        driver.navigate().forward();
        Thread.sleep(3000);
        
    }

注意: driver 的窗口并没有切换.

Selenium java自动化

3.9 弹窗

    // 用于不能定位到元素时使用
    public void alert_test()
    {
        Alert alert = driver.switchTo().alert(); // 切换到提示弹窗
        alert.sendKeys("are you ok");// 输入
        alert.accept(); // 接收
        alert.dismiss();// 取消
    }

3.10 鼠标 键盘 操作

唯一区别就是,能够看到鼠标在移动,有时候没反应的,需要perform()执行一下才有效果.

    public void mouseKeysboard_test() throws InterruptedException {
        WebElement ele = driver.findElement(By.cssSelector("#xxx"));
        Actions actions = new Actions(driver);
        actions.clickAndHold(ele).perform();
        Thread.sleep(3000);
        
        ele.sendKeys("hhhhhh");
    }

3.11 选择框

Selenium java自动化文章来源地址https://www.toymoban.com/news/detail-503475.html

    public void select_test() throws InterruptedException {
        WebElement ele = driver.findElement(By.cssSelector("#ShippingMethod"));
        Select select = new Select(ele);
        select.selectByIndex(1); // 通过下标选择
        Thread.sleep(3000);
        select.selectByValue("10.69"); // 通过元素属性 value来选择
        Thread.sleep(3000);
        select.selectByVisibleText("UPS 2nd Day Air ==> $9.03");
        Thread.sleep(3000);
    }

3.12 上传文件

    public void fileUpload_test() throws InterruptedException {
        WebElement ele = driver.findElement(By.cssSelector("#选择上传文件"));
        ele.sendKeys("本地文件地址");
        Thread.sleep(3000);
    }

到了这里,关于Selenium java自动化的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Java自动化-selenium

    最近在学习写自动化控件,自动化脚本开发。可能会需要学到的知识,提前了解一下: idea,maven,谷歌驱动,网络 个人建议使用maven自动导入,因为需要的依赖包确实不少。 个人通俗的理解就是:模拟人的行为去各个网站溜达,点点按钮,查查数据,或者把看到的信息背回来。

    2024年02月04日
    浏览(24)
  • Selenium自动化测试(基于Java)

    目录 一. 了解Selenium ✅1.1 概念 ✅1.2 作用 ✅1.3 特点 ✅1.4 工作原理  二. Selenium + Java 环境搭建 ✅2.1 下载 Chrome 浏览器 ✅2.2 查看浏览器的版本 ✅2.3 下载浏览器驱动 ✅2.4 验证环境是否搭建成功 三. Selenium 常用 API ✅3.1 定位元素 ✅3.2 操作对象 ✅3.3 添加等待 ✅3.4 打印信息

    2024年02月06日
    浏览(72)
  • 【自动化测试】——Selenium (基于java)

    小亭子正在努力的学习编程,接下来将开启软件测试的学习~~ 分享的文章都是学习的笔记和感悟,如有不妥之处希望大佬们批评指正~~ 同时如果本文对你有帮助的话,烦请点赞关注支持一波, 感激不尽~~ 目录 一、认识Selenium 1.什么是自动化测试  2.Selenium  3.webdriver的工作原理

    2024年02月15日
    浏览(32)
  • 【教程】JAVA + selenium 进行自动化测试

    自动登录淘宝 获取请求响应数据等 使用到的工具类

    2024年02月11日
    浏览(31)
  • Java + Selenium + Appium自动化测试

    一、启动测试机或者Android模拟器(Genymotion俗称世界上最快的模拟器,可自行百度安装) 二、启动Appium(Appium环境安装可自行百度) 三、安装应用到Genymotion上,如下图我安装一个计算机的小应用,包名为CalcTest.apk 安装步骤:(基于Android SDK已经配置好了环境变量,可自行百

    2024年02月07日
    浏览(30)
  • 【测试开发之路】Java & Selenium自动化

    1、Selenium介绍 ​ 使用前需要下载浏览器对应的Driver,Selenium提供了EdgeDriver和ChromiumDriver两种驱动类。需要安装与本机浏览器版本相同的驱动。 ​ EdgeDriver下载地址:Microsoft Edge WebDriver - Microsoft Edge Developer ​ ChromiumDriver下载地址:CNPM Binaries Mirror (npmmirror.com) 2、导入Maven库 (

    2024年02月12日
    浏览(33)
  • 自动化测试:Selenium原理及安装教程

    目录 一、客户端和驱动(环境)安装 1、安装客户端库 2、安装浏览器和驱动 二、简单示例(Python自动化开发) 省略浏览器驱动路径 三、常见问题 关闭 chromedriver 日志 浏览器首页显示防病毒重置设置 扩展知识 Selenium 是一套 Web网站 的程序自动化操作 解决方案。 通过它,我

    2024年02月09日
    浏览(41)
  • 保姆级自动化测试教程(Selenium+java)

    自动化测试指软件测试的自动化,在预设状态下运行应用程序或者系统,预设条件包括正常和异常,最后评估运行结果。将人为驱动的测试行为转化为机器执行的过程。 自动化测试包括 UI自动化 , 接口自动化 , 单元测试自动化 。 单元测试 :最大的投入应该在单元测试上

    2024年02月12日
    浏览(34)
  • Java + Selenium + Appium手机自动化测试

    一、启动测试机或者Android模拟器(Genymotion俗称世界上最快的模拟器,可自行百度安装) 二、启动Appium(Appium环境安装可自行百度)   三、安装应用到Genymotion上,如下图我安装一个计算机的小应用,包名为CalcTest.apk 安装步骤:(基于Android SDK已经配置好了环境变量,可自行

    2024年02月06日
    浏览(42)
  • Selenium 自动化 —— Selenium IDE录制、回放、导出Java源码

    之前我们在专栏的第一篇文章中演示了使用使用Selenium进行百度搜索的Hello world示例。 代码不复杂非常简单: 但是对不懂HTML、CSS和Selenium API的同学,可能要编写一个完整的可运行的Selenium程序还是有一点点难度。 熟悉CSS和花了一点的时间看了我后续Selenium 系列教程的除外哈。

    2024年03月22日
    浏览(28)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包