前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >【测试篇】探秘自动化测试函数:解锁高效测试新路径

【测试篇】探秘自动化测试函数:解锁高效测试新路径

作者头像
用户11288949
发布2025-03-26 14:10:54
发布2025-03-26 14:10:54
4100
代码可运行
举报
文章被收录于专栏:学习学习
运行总次数:0
代码可运行

📚️1.操作选择元素

🚀1.1点击提交

此时我们在浏览器进行选择点击元素后,可以使用一下代码进行模拟点击的操作:

代码语言:javascript
代码运行次数:0
运行
复制
driver.findElement(By.cssSelector("#su")).click();

这里使用click进行点击事件模拟;

🚀1.2模拟输入

代码如下:

代码语言:javascript
代码运行次数:0
运行
复制
  driver.findElement(By.cssSelector("#kw")).sendKeys("雷霆万钧");

这里使用sendKeys进行输入事件模拟;

🚀1.3清除内容

代码如下:

代码语言:javascript
代码运行次数:0
运行
复制
driver.findElement(By.cssSelector("#kw")).sendKeys("我爱游戏");
driver.findElement(By.cssSelector("#kw")).clear();
driver.findElement(By.cssSelector("#kw")).sendKeys("我爱学习");

这里使用clear进行清除输入框的事件模拟;

🚀1.4 获取文本信息

代码如下:

代码语言:javascript
代码运行次数:0
运行
复制
 System.out.println(driver.findElement(By.cssSelector("#hotsearch-content-wrapper > li:nth-child(1)")).getText());

这里使用getText进行获取文本的操作;

当然如果这里的元素是一个属性那么就要使用:getAttribute("属性名称")进行获取属性的操作;

🚀1.5获取标题,URL

代码如下:

代码语言:javascript
代码运行次数:0
运行
复制
void getUrlAndTitle(){
        createDriver();
        System.out.println(driver.getCurrentUrl());
        System.out.println(driver.getTitle());
        driver.quit();
    }

获取这里的URL是getCurrentUrl,然后获取标题为getTitle;

📚️2.窗口的操作

🚀2.1句柄的操作

提示:在每个页面都有一个drive对应的句柄,如果跳转另一个页面后(打开了两个页面),那么就要操作句柄的转换;

代码语言:javascript
代码运行次数:0
运行
复制
 //句柄的操作
    void getHandle(){
        //这里要点击进入另一个页面
        createDriver();
        driver.findElement(By.cssSelector("#hotsearch-content-wrapper > li:nth-child(1) > a")).click();
        //此时进入了另一个页面,更换driver句柄
        //获取当前句柄
        String concurrentDriver = driver.getWindowHandle();
        //获取所有页面句柄
        Set<String> allDrivers = driver.getWindowHandles();
        for(String handle : allDrivers){
            if(handle != concurrentDriver){
                 driver.switchTo().window(handle);
            }
        }

注意:我们要获取当前页面的drive句柄,然后再次获取全部页面的句柄;最后如果过当前页面不为之前获取的页面,那么就要使用if语句进行句柄的转换;

🚀2.2窗口的调整

代码如下:

代码语言:javascript
代码运行次数:0
运行
复制
void changeWindow() throws InterruptedException {
        createDriver();
        driver.manage().window().minimize();
        Thread.sleep(3000);
        driver.manage().window().maximize();
        Thread.sleep(3000);
        //全屏窗⼝
        driver.manage().window().fullscreen();
        Thread.sleep(3000);
        //⼿动设置窗⼝⼤⼩
        driver.manage().window().setSize(new Dimension(1024,768));
        driver.quit();
    }

解释:第一个minize即最小化,然后就是最大化,全屏,最后规定尺寸大小;

3.3屏幕截图

我们这里首先要进行依赖的引入:

代码语言:javascript
代码运行次数:0
运行
复制
        <dependency>
            <groupId>commons-io</groupId>
            <artifactId>commons-io</artifactId>
            <version>2.6</version>
        </dependency>

代码如下:

代码语言:javascript
代码运行次数:0
运行
复制
File file = ((TakesScreenshot)webDriver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(file,new File(filename));

注意:copyFile中第一个file是我们截图的文件,然后后面就是我们保存文件的路径;

🚀2.3关闭窗口

代码如下:

代码语言:javascript
代码运行次数:0
运行
复制
driver.close();

但是如果存在两个close,关闭两个页面,那么注意:将这里的driver转化,close会将对应的句柄进行释放,所以必须进行句柄修改;

📚️3.等待

🚀3.1强制等待

代码如下:

代码语言:javascript
代码运行次数:0
运行
复制
Thread.sleep(1000);

这里的1000指的就是1000ms,那么所以就是直接强制等待1s;(等待的主要的作用就是在等待渲染,防止在查找元素时,元素本来存在,但是由于没有渲染出来,导致找不到元素)

🚀3.2隐式等待

隐式等待是⼀种智能等待,他可以规定在查找元素时,在指定时间内不断查找元素。如果找到则代码继续执⾏,直到超时没找到元素才会报错。 implicitlyWait() 参数:Duration类中提供的毫秒、秒、分钟等⽅法

代码如下:

代码语言:javascript
代码运行次数:0
运行
复制
driver.manage().timeouts().implicitlyWait(Duration.ofSeconds(2));

注意:隐式等待的作用域是全局中;

🚀3.3显示等待

显⽰等待也是⼀种智能等待,在指定超时时间范围内只要满⾜操作的条件就会继续执⾏后续代码

代码如下:

代码语言:javascript
代码运行次数:0
运行
复制
new WebDriverWait(driver, Duration.ofSeconds(3)).
                until(ExpectedConditions.presenceOfElementLocated(By.cssSelector("#\\31  > div > div > div > div > div > div.header-wrapper_3m6nI > div.cos-row.row-text_1L24W.row_4WY55 > div > div > div.cos-flex.cos-items-center > div.title-wrapper_XLSiK > a > div > p > span > span")));

注意:

• elementToBeClickable(By locator) ‒ ⽤于检查元素的期望是可⻅的并已启⽤,以便您 可以单击它。 • textToBe(Bylocator,String str) - 检查元素。 • presenceOfElementLocated(Bylocator) ‒ 检查⻚⾯的 DOM 上是否存在元素。 • urlToBe(java.lang.String url) ‒ 检查当前⻚⾯的 URL 是⼀个特定的 URL;

当然这里还有其他的方法~~~

📚️4.浏览器导航

🚀4.1打开网站

代码如下:

代码语言:javascript
代码运行次数:0
运行
复制
driver.navigate().to("https://selenium.dev");

driver.get("https://selenium.dev");

注意:这两种方法都是打开网站的操作,没有什么区别;

🚀4.2浏览器的前进后退域刷新

代码如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
driver.navigate().back();
driver.navigate().forward();
driver.navigate().refresh();

对应的就是上述的按键;

📚️5.弹窗

具体的代码如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
Alert alert = driver.switchTo.alert();
//输入内容
alert.sendKeys("");
//确认
alert.accept();
//取消
alert.dismiss();

大致就是:点击进入弹框过后,出现了输入框,通过sendKey进行输入;

然后accept进行确认,然后dismiss进行取消;

📚️6.文件上传

点击⽂件上传的场景下会弹窗系统窗⼝,进⾏⽂件的选择。selenium⽆法识别⾮web的控件,上传⽂件窗⼝为系统⾃带,⽆法识别窗⼝元素但是可以使⽤sendkeys来上传指定路径的⽂件,达到的效果是⼀样的

文件上传代码如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
WebElement ele = driver.findElement(By.cssSelector("body > div > div > 
input[type=file]"));
2 ele.sendKeys("D:\\selenium2html\\selenium2html\\upload.html");

📚️7.浏览器参数设置

🚀7.1无头模式设置

一般来说,我们启动浏览器后,直接就是可见式的看见浏览器的启动,但是设置无头模式后,直接在后台运行,就不用盯着浏览器看了;

代码如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
        WebDriverManager.chromedriver().setup();
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--remote-allow-origins=*");
        //设置无头模式
        options.addArguments("-headless");

        WebDriver driver = new ChromeDriver(options);

options.addArguments("--remote-allow-origins=*");设置网址访问权限; options.addArguments("-headless");设置无头模式;

🚀7.2浏览器加载策略

代码如下所示:

代码语言:javascript
代码运行次数:0
运行
复制
 void changePage(){
        WebDriverManager.chromedriver().setup();
        ChromeOptions options = new ChromeOptions();
        options.addArguments("--remote-allow-origins=*");
        //options.setPageLoadStrategy(PageLoadStrategy.NORMAL);
        //options.setPageLoadStrategy(PageLoadStrategy.NONE);
        //options.setPageLoadStrategy(PageLoadStrategy.EAGER);

        WebDriver driver = new ChromeDriver(options);
        driver.get("https://www.baidu.com/");
        driver.quit();
    }

options.setPageLoadStrategy(PageLoadStrategy.NORMAL):即默认加载,即全部数据进行加载;

options.setPageLoadStrategy(PageLoadStrategy.NONE):DOM访问已准备就绪,但是图像资源可能还在加载;

options.setPageLoadStrategy(PageLoadStrategy.EAGER):完全不会阻塞webdriver;会导致什么资源都没加载出来;

📚️8.总结

本期小编主要讲解了关于自动化测试的函数,涉及到操作元素,窗口的操作,等待,浏览器导航,弹窗操作,文件上传以及浏览器参数设置;

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-03-25,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 📚️1.操作选择元素
    • 🚀1.1点击提交
    • 🚀1.2模拟输入
    • 🚀1.3清除内容
    • 🚀1.4 获取文本信息
    • 🚀1.5获取标题,URL
  • 📚️2.窗口的操作
    • 🚀2.1句柄的操作
    • 🚀2.2窗口的调整
    • 🚀2.3关闭窗口
  • 📚️3.等待
    • 🚀3.1强制等待
    • 🚀3.2隐式等待
    • 🚀3.3显示等待
  • 📚️4.浏览器导航
    • 🚀4.1打开网站
    • 🚀4.2浏览器的前进后退域刷新
  • 📚️5.弹窗
  • 📚️6.文件上传
  • 📚️7.浏览器参数设置
    • 🚀7.1无头模式设置
    • 🚀7.2浏览器加载策略
  • 📚️8.总结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档