WatiN——Web自动化测试(三)【弹出窗口处理】

news/2024/7/7 20:26:13

 🔥 交流讨论:欢迎加入我们一起学习!

🔥 资源分享耗时200+小时精选的「软件测试」资料包

🔥 教程推荐:火遍全网的《软件测试》教程  

📢欢迎点赞 👍 收藏 ⭐留言 📝 如有错误敬请指正!

上一节我们说了关于WatiN的自动化的框架的设计,一般的系统应用应该可以。关于Case的本身的编写在实际应用中也会有一些问题和难题。这一节我将

WatiN的弹出框作一下详细的总结。在实际网页中,操作按钮可能弹出各种样式的弹出框,如何进行有效的处理呢?

1、Alert Dialog

Alert对话框很简单,弹出之后只是一个提示作用,弹出之后进行确认即可。

复制代码

public static void CaptureAlertDialog(this Browser browser, Action<AlertDialogHandler> operation, int waitTimeInSeconds)
{
  var handler = new AlertDialogHandler();
  using (new UseDialogOnce(browser.DialogWatcher, handler))
  {
    operation(handler);
    handler.WaitUntilExists(waitTimeInSeconds);
    if (handler.Exists())
      handler.OKButton.Click();
  }
}

复制代码

CaptureAlertDialog:是处理alert对话窗方法,其传入的参数分别是:Browser浏览器对象、Acation<AlertDialogHandler> alert句柄、waitTimeSeconds 等待时间

context.Browser.CaptureAlertDialog((AlertDialogHandler handler) => { btn.WaitUntilExistsAndClickNoWait(context.TestConfig.Timeout); }, 5);

btn.WaitUntilExistsAndClickNoWait(context.TestConfig.Timeout); 为button的点击事件。

2、Confirm Dialog

复制代码

public static void CaptureConfirmDialog(this Browser browser, Action<ConfirmDialogHandler> operation, int waitTimeInSeconds)
{
  var handler = new ConfirmDialogHandler();
  using (new UseDialogOnce(browser.DialogWatcher, handler))
  {
    operation(handler);
    handler.WaitUntilExists(waitTimeInSeconds);
    if (handler.Exists())
    {
      handler.OKButton.Click();//确认按钮 handler.CancelButton.Click();取消按钮
    }
  }
}

复制代码

复制代码

context.Browser.CaptureConfirmDialog((ConfirmDialogHandler handler) =>
{
btn.WaitUntilExistsAndClickNoWait(context.TestConfig.Timeout);
}, 5);


btn.WaitUntilExistsAndClickNoWait(context.TestConfig.Timeout);为Button点击事件

复制代码

3、文件下载对话框FileDownloadHandler

复制代码

var btn = "获取button按钮";

var fileName = System.Windows.Forms.Application.StartupPath + "保存路径文件名";
FileDownloadHandler fileDownloadHandler = new FileDownloadHandler(fileName);
using (new UseDialogOnce(context.Browser.DialogWatcher, fileDownloadHandler))
{
  btn.WaitUntilExistsAndClickNoWait(context.TestConfig.Timeout);
  context.Browser.WaitUntil(5);
  fileDownloadHandler.WaitUntilFileDownloadDialogIsHandled(60);
  fileDownloadHandler.WaitUntilDownloadCompleted(200);
}

4、网页对话框(window.open)

有的网页对话框通过window.open的方式进行打开的是其他的页面,比如通过其他的页面进行添加分类等等,遇到此处的时候应该如何处理呢?其实这等窗口是页

面,内容可以通过Browser对象来进行获取。

首先需要将主浏览器对象进行保存,让这个browser对象再打开新窗口,从中获取窗口页面的URL

如下代码:

var orginBrowser = context.Browser;//context.Browser浏览器对象
try
{
  Div.Button(btn => btn.ClassName == "ButtonStyle").WaitUntilExistsAndClick(context.TestConfig.Timeout);//Button按钮,进行onclick事件
  context.Browser.WaitUntil(3);//等待3秒
  context.Browser = WatiN.Core.Browser.AttachTo(context.Browser.GetType(), Find.ByUrl(url => url.IndexOf("页面名称") > -1), context.TestConfig.Timeout);//查找新窗口的页面名称
  context.Browser.Refresh();//进行刷新
  ///
  ///对窗口中的内容进行操作
  ///
  context.Browser.Close();
}
catch { }
 context.Browser = orginBrowser;

在WatiN自动化测试中,一般遇到的弹出窗口也就上面的四种,基本上都可以解决网页中的问题。

最后我邀请你进入我们的【软件测试学习交流群:785128166】, 大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,还会有免费直播课,收获更多测试技巧,我们一起进阶Python自动化测试/测试开发,走向高薪之路

作为一个软件测试的过来人,我想尽自己最大的努力,帮助每一个伙伴都能顺利找到工作。所以我整理了下面这份资源,现在免费分享给大家,有需要的小伙伴可以关注【公众号:程序员二黑】自提!


http://lihuaxi.xjx100.cn/news/2078614.html

相关文章

Androidstudio实现登录按钮按下变色

在activity_main.xml中&#xff0c;写如下代码&#xff1a; <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas.android.com/apk/res/android"android:layout_width"match_parent"androi…

在vue2中使用tailwindcss(完整教程)

如果你看过好多教程之后&#xff0c;还是报错&#xff0c;无法使用tailwindcss&#xff0c;我希望本教程可以让你成功上岸。 环境要求 node&#xff1a;>v14.17.0 安装tailwindcss 由于最新的tailwind css使用post css 8版本&#xff0c;vue2框架暂时还不支持&#xff0…

开篇语 | 容器中的⼤模型 (LLM in Containers)

如果我们想搭建一个企业级的大模型应用&#xff0c;不管使用开源的基础模型自己来发布&#xff0c;还是使用类似于 ChatGPT 的闭源 API&#xff0c;我们都需要搭建一个大模型流水线来管理应用体系中除了基础模型之外的功能模块。 Replit 的一篇博客&#xff08;https://blog.r…

【牛客】HJ87 密码强度等级 CM62 井字棋

题目一:密码强度等级 题目链接&#xff1a;密码强度等级_牛客题霸_牛客网 (nowcoder.com) 本题主要考察C语言中逻辑分支语句&#xff0c;基本语句以及对各种特殊字符 &#xff0c;ASCII值以及条件表达中的逻辑运算符关系运算符各自功能的理解&#xff0c;以及基本使用&#x…

2023年NOC大赛软件创意编程(学而思)赛道c++初赛试题

2023NOC软件创意编程初中组C++初赛 一、单选 1、(2分)下列选项中,不属于计算机软件系统的是 A 操作系统 C.用户自己开发的软件系统 B.系统文用程序D.存储系统 2、(2分)十进制数17对应的二进制数是( A 11000B.10001 C 11111 D.10101 3、(2分)关于函数,以下说法错误的是( A…

docker搭建odoo16开发环境

要使用Docker搭建Odoo 16的开发环境&#xff0c;我们需要准备两个主要文件&#xff1a;一个是docker-compose.yml文件&#xff0c;用来定义和运行多个Docker应用容器&#xff0c;包括Odoo 16和PostgreSQL 15&#xff1b;另一个是odoo.conf文件&#xff0c;用来配置Odoo应用。下…

【教程】Github环境配置新手指南(超详细)

写在前面&#xff1a; 如果文章对你有帮助&#xff0c;记得点赞关注加收藏一波&#xff0c;利于以后需要的时候复习&#xff0c;多谢支持&#xff01; 文章目录 一、Github初始设置&#xff08;一&#xff09;登入Github&#xff08;二&#xff09;新建仓库 二、本地Git配置&am…

机器学习笔记 计算机视觉中的测距任务常见技术路线

一、计算机视觉中的测距任务 测距是计算机视觉中的一项关键任务,涉及测量物体和相机之间的距离。这些信息可用于多种应用,包括机器人、自动驾驶汽车和增强现实。测距技术有很多种,包括主动式和被动式,每种技术都有自己的优点和局限性。主动测距技术,例如飞行时间、结构光和…