当前位置: 首页 > article >正文

Web自动化测试

目录

一、搜索功能

二、定位的方式

三、操作测试对象

四、屏幕截图

五、等待

六、弹窗


一、搜索功能

web自动化测试就是对一个网站进行自动测试和手工测试的步骤相同。

手工测试的步骤

1、打开浏览器

2、输入网址:https://www.baidu.com

3、找到百度的输入框,输入关键词

4、找到百度一下并点击

5、关闭浏览器

web自动化测试的步骤

1、安装驱动

在编写程序时,需要使用selenium方法来编写自动化脚本代码,所以需要引用selenium驱动。

        <dependency>
            <groupId>org.seleniumhq.selenium</groupId>
            <artifactId>selenium-java</artifactId>
            <version>4.0.0</version>
        </dependency>

要启动浏览器,所以也要引用启动浏览器的引用

        <dependency>
            <groupId>io.github.bonigarcia</groupId>
            <artifactId>webdrivermanager</artifactId>
            <version>5.8.0</version>
        </dependency>

2、编写代码

public class TestCase {

    void test() throws InterruptedException {

        //1、驱动打开浏览器
        WebDriverManager.chromedriver().setup();

        //方便查看操作步骤
        Thread.sleep(3000);

        //修改浏览器权限,允许访问所有链接
        ChromeOptions options=new ChromeOptions();
        options.addArguments("--remote-allow-origins=*");

        //创建浏览器对象
        WebDriver driver=new ChromeDriver(options);

        Thread.sleep(3000);

        //2、输入正确的网址
        driver.get("https://www.baidu.com");

        Thread.sleep(3000);

        //3、找到输入框
        driver.findElement(By.cssSelector("#kw")).sendKeys("搜索内容");

        Thread.sleep(3000);

        //4、找到百度一下按钮并点击
        driver.findElement(By.cssSelector("#su")).click();

        Thread.sleep(3000);

        //5、关闭浏览器
        driver.quit();

    }
}
public class TestRun {
    public static void main(String[] args) throws InterruptedException {
        TestCase testCase=new TestCase();
        testCase.test();
    }
}

二、定位的方式

定位页面上某个模块,可以使用cssSelector选择器和Xpath写法

//放入要定位的内容  
driver.findElement(By.cssSelector(""));
driver.findElement(By.xpath(""));

三、操作测试对象

操作对象

方法作用
click();点击
sendkeys();模拟键盘输入
clear();清除
getText();获取文本信息
getTitle();获取页面标题
getCurrentUrl();获取当前页面的URL

窗口设置

 
        //窗口最大化
        driver.manage().window().maximize();

        //窗口最小化
        driver.manage().window().minimize();

        //全屏窗口
        driver.manage().window().fullscreen();

        //手动设置窗口大小
        driver.manage().window().setSize(new Dimension(1,1));

窗口页面切换


        //获取当前页面的句柄
        String handle= driver.getWindowHandle();

        //获取所有页面的句柄
        String allHandles= driver.getWindowHandles().toString();

        //切换句柄
        for (String handle:allHandles){
            if (handle!=curHandle){
                //切换
                driver.switchTo().window(handle);
            }
        }

四、屏幕截图

1、基础截图方法

//截屏方法
File srcFile=((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
//把图片复制到目的地址
FileUtils.copyFile(srcFile,new File("my.png"));

2、进阶截屏方法

 void getScreenShot(String str) throws IOException {

        //创建年月加时间
        SimpleDateFormat sim1 = new SimpleDateFormat("yyyy-MM-dd");
        SimpleDateFormat sim2 = new SimpleDateFormat("HHmmssSS");

        //给年月加时间赋值
        String dirTime = sim1.format(System.currentTimeMillis());
        String fileTime = sim2.format(System.currentTimeMillis());

        //图片的位置
        String filename = "./src/test/image/" + dirTime + "/" + str + "-" + fileTime + ".png";

        System.out.println("filename:" + filename);

        //加上基础截屏的方法

        File srcFile =((TakesScreenshot)this.driver).getScreenshotAs(OutputType.FILE);

        FileUtils.copyFile(srcFile, new File(filename));

    }

五、等待

等待分为强制等待,隐式等待和显式等待。

1、强制等待

Thread.sleep();

优点:写法简单

缺点:极大的增加了自动化的执行时间

2、隐式等待

隐式等待是一种智能等待,可以规定在查找元素时,在指定的时间内进行不断查找元素,如果找到了,则代码继续执行,直到超时没有找到元素就会报错。

driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(3));//单位s

优点:智能等待,作用于全局

缺点:只能查找元素,要是有其他操作,就会强制等待,每次查找元素都会等待

3、显式等待

显式等待也是一种智能等待,在指定的时间范围内,只要满足操作条件,就会继续执行后续代码。

//要执行的操作必须是ExpectedConditions类下的操作
new WebDriverWait(driver,Duration.ofSeconds(3)).until();

显式等待,只作用于当前的条件上。

六、弹窗

弹窗分为警告弹窗,确认弹窗和提示弹窗。

弹窗不能定位,只能通过方法切换到弹窗上。

这三类弹窗,主要对应的操作为点击确认,点击取消,输入文本信息。


        //先切换到弹窗上
        Alert alert=driver.switchTo().alert();
        
        //确认
        alert.accept();
        
        //取消
        alert.dismiss();
        
        //输入文本信息
        alert.sendKeys("hello");


http://www.kler.cn/a/317563.html

相关文章:

  • C++单例模式与多例模式
  • ios swift开发--ios远程推送通知配置
  • 微服务(二)
  • 【121. 买卖股票的最佳时机】——贪心算法/动态规划
  • 【云计算解决方案面试整理】1-2云计算基础概念及云计算技术原理
  • 使用Python实现定期从API获取数据并存储到数据库的完整指南
  • C语言中的关键字详细梳理
  • 力扣76 最小覆盖子串 Java版本
  • 面试知识点总结篇三
  • Linux-网络编程
  • MySQL record 06 part
  • Chainlit集成LlamaIndex实现知识库高级检索(BM25全文检索器)
  • 爬虫的流程
  • vulnhub(13):Digitalworld.local JOY(ftp 的未授权文件读写漏洞、文件覆盖提权)
  • 获取商品销量详情API:深入解析返回值,助力电商决策
  • hrm人力资源管理系统,绩效,考勤,薪酬,五险一金,等全面人力管理(源码+配套方案)
  • Java面试篇基础部分-ReentrantLock详解
  • 应用密码学第一次作业(9.23)
  • 油耳朵怎么清理干净?双十一可视挖耳勺排行榜
  • Python注释
  • gitlab默认克隆地址的修改
  • react-native和原生android的交互
  • Mysql 架构
  • 武汉正向科技 格雷母线检测方式 :车检,地检
  • 78、Python之函数式编程:funcy,功能更加齐全的函数式编程库
  • 等位基因与碱基:异同点解析