让 IAlert 作为观察者

2024-01-19

我正在使用最后的硒,一些网站会随机弹出消息,停止正常的测试过程

我的想法是,我需要将 IAlert 作为观察者模式来捕获警报,接受警报并从其停止处理弹出窗口的点继续测试。

警报代码:

try
{
    IAlert alert = driver.SwitchTo().Alert();
    if (alert != null)
    {
        alert.Accept();
    }
}
catch (Exception ex)
{}

主要问题是我该如何执行它,或者是否有更好的方法来处理随机弹出窗口?

Thank's


由于当您尝试做其他事情时弹出窗口很重要,因此我建议采用以下方法:事件触发WebDriver https://github.com/SeleniumHQ/selenium/blob/fa067c7b80f2e07270b7e36d2a01938aa3f33973/dotnet/src/support/Events/EventFiringWebDriver.cs允许您定义将在特定事件之前或之后运行的自定义代码。看一个例子here https://github.com/SeleniumHQ/selenium/blob/fa067c7b80f2e07270b7e36d2a01938aa3f33973/dotnet/test/support/Events/EventFiringWebDriverTest.cs#L31.

不幸的是我已经很长时间没有在.Net上写过任何东西了,所以我的C#技能已经生锈了。所以大致看起来像这样:

IWebDriver driver = new FirefoxDriver();
EventFiringWebDriver eventDriver = new EventFiringWebDriver(driver);
// add all relevant events, for example before clicking on something:
eventDriver.ElementClicking = new EventHandler<FindElementEventArgs>(checkPopup);
driver = eventDriver; // only need EventFiringWebDriver

进而

static void checkPopup(object sender, OpenQA.Selenium.Support.Events. WebElementEventArgs e) {
     EventFiringWebDriver driver = (sender as OpenQA.Selenium.Support.Events.EventFiringWebDriver);
     try {
         Alert alert = driver.SwitchTo().Alert();
         alert.accept();
     }
     catch (NoAlertPresentException ex) { 
         // nothing to do - just continue
     }
}

所以现在,每次脚本要单击某些内容时,它都会首先检查弹出窗口并在需要时接受它。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

让 IAlert 作为观察者 的相关文章

  • Rx.NET 中是否有一个Subject 实现,其功能类似于BehaviourSubject,但仅在值发生更改时才发出?

    有没有Subject https learn microsoft com en us previous versions dotnet reactive extensions hh229699 v vs 103 Rx NET 中的实现在功能
  • 打印“X”个字符数与“X”字符串长度的所有可能组合(暴力破解)

    我正在尝试编写一个单词组合生成器 我的意思是打印 X 个字符数与 X 字符串长度的所有可能组合 首先 我需要说的是 我在 StackOverFlow 中看到了一个关于这个问题的问题 其中有很多单词生成器的答案来执行此操作 在不同的语言上 但
  • 从复选框列表中选择循环生成的复选框中的一个复选框

    抱歉我的英语不好 在我的 ASP NET 网站上 我从 SQL 表导入软件列表 看起来像这样 但实际上要长得多 Microsoft Application Error Reporting br br Microsoft Applicatio
  • 如何将 SOLID 原则应用到现有项目中

    我对这个问题的主观性表示歉意 但我有点卡住了 我希望之前处理过这个问题的人能够提供一些指导和建议 我有 现在已经成为 一个用 C 2 0 编写的非常大的 RESTful API 项目 并且我的一些类已经变得巨大 我的主要 API 类就是一个
  • 强制初始化模板类的静态数据成员

    关于模板类的静态数据成员未初始化存在一些问题 不幸的是 这些都没有能够帮助我解决我的具体问题的答案 我有一个模板类 它有一个静态数据成员 必须为特定类型显式实例化 即必须专门化 如果不是这种情况 使用不同的模板函数应该会导致链接器错误 这是
  • cpp.react库的C++源代码中奇怪的“->* []”表达式

    这是我在文档中找到的 C 片段cpp react 库 https github com schlangster cpp react implicit parallelism auto in D MakeVar 0 auto op1 in g
  • 即使没有异步,CallContext.LogicalGetData 也会恢复。为什么?

    我注意到CallContext LogicalSetData LogicalGetData不按照我期望的方式工作 内部设置的值async方法得到恢复即使没有异步或任何类型的线程切换 无论如何 这是一个简单的例子 using System u
  • SecurityAction.RequestMinimum 在 .Net 4.0 中已过时

    最近 我们的 Net 客户端库正在升级以针对 Net 4 0 进行编译 将目标框架更改为4 0后 应用程序出现一些编译错误 In AssemblyInfo cs assembly SecurityPermission SecurityAct
  • 不同 C++ 文件中的相同类名

    如果两个 C 文件具有相同名称的类的不同定义 那么当它们被编译和链接时 即使没有警告也会抛出一些东西 例如 a cc class Student public std string foo return A void foo a Stude
  • 假装 .NET 字符串是值类型

    在 NET 中 字符串是不可变的 并且是引用类型变量 这通常会让新的 NET 开发人员感到惊讶 因为他们的行为可能会将它们误认为是值类型对象 然而 除了使用实践StringBuilder对于长连接 尤其是 在循环中 在实践中是否有任何理由需
  • 什么是空终止字符串?

    它与什么不同标准 字符串 http www cplusplus com reference string string 字符串 实际上只是一个数组chars 空终止字符串是指其中包含空字符的字符串 0 标记字符串的结尾 不一定是数组的结尾
  • 从 C# 使用 Odbc 调用 Oracle 包函数

    我在 Oracle 包中定义了一个函数 CREATE OR REPLACE PACKAGE BODY TESTUSER TESTPKG as FUNCTION testfunc n IN NUMBER RETURN NUMBER as be
  • 不可变类与结构

    以下是类与 C 中的结构的唯一区别 如果我错了 请纠正我 类变量是引用 而结构变量是值 因此在赋值和参数传递中复制结构的整个值 类变量是存储在堆栈上的指针 指向堆上的内存 而结构变量作为值存储在堆上 假设我有一个不可变的结构 该结构的字段一
  • 在 C 中使用枚举而不是 #defines 作为编译时常量是否合理?

    在 C 工作了一段时间后 我将回到 C 开发领域 我已经意识到 在不必要的时候应该避免使用宏 以便让编译器在编译时为您做更多的工作 因此 对于常量值 在 C 中我将使用静态 const 变量或 C 11 枚举类来实现良好的作用域 在 C 中
  • 比较:接口方法、虚方法、抽象方法

    它们各自的优点和缺点是什么 接口方法 虚拟方法 抽象方法 什么时候应该选择什么 做出这一决定时应牢记哪些要点 虚拟和抽象几乎是一样的 虚方法在基类中有一个实现 可以选择重写 而抽象方法则没有 并且must在子类中被覆盖 否则它们是相同的 在
  • 模板类中的无效数据类型生成编译时错误?

    我正在使用 C 创建一个字符串类 我希望该类仅接受数据类型 char 和 wchar t 并且我希望编译器在编译时使用 error 捕获任何无效数据类型 我不喜欢使用assert 我怎样才能做到这一点 您可以使用静态断言 促进提供一个 ht
  • 将 Lambda 表达式树与 IEnumerable 结合使用

    我一直在尝试了解有关使用 Lamba 表达式树的更多信息 因此我创建了一个简单的示例 这是代码 如果作为 C 程序粘贴到 LINQPad 中 它可以工作 void Main IEnumerable
  • Visual Studio 2015 - Web 项目上缺少共享项目参考选项卡

    我从 MSDN 订阅升级到 Visual Studio 2015 因为我非常兴奋地阅读有关共享项目的信息 当我们想要做的只是重用代码时 不再需要在依赖项中管理 21382 个 nuget 包 所以我构建了一个测试共享项目 其中包含一些代码
  • 了解 Lambda 表达式和委托 [关闭]

    Closed 这个问题需要多问focused help closed questions 目前不接受答案 我已经尝试解决这个问题很长一段时间了 阅读在线博客和文章 但到目前为止还没有成功 什么是代表 什么是 Lambda 表达式 两者的优点
  • 是否允许全局静态标识符以单个 _ 开头?

    换句话说 可能static 文件范围 全局变量恰好以一个下划线开头 而不会产生与 C 实现发生名称冲突的可能性 https www gnu org software libc manual html node Reserved Names

随机推荐

  • 是否可以隐藏 asp:repeater 中的列?

    我需要隐藏一列asp repeater 最好将它们隐藏在服务器端 而不仅仅是通过 CSS 在 HTML 中 中继器有一个ID 但我很难在调试器中找到它拥有的表 考虑到中继器的工作原理 我不确定它是否可能 我给了 HTMLtable an I
  • Java 中的流如何影响内存消耗?

    我已经多次使用流 但我从来没有读过太多关于它们实际工作原理的内容 除了流只是一个隐喻之外 我对它们也了解不多 流仅表示字节序列 我不太了解它们的实际工作原理 我猜想在 Java 中打开文件流与具有向流提供 指针 功能的操作系统进行交互 基本
  • 最小起订量静态类中的静态方法

    public Product GetbyID int id try mycode Product p catch DataAccessException ex throw new BusinessException ex ErrorCode
  • 为什么 Composer 无法正确安装 Laravel 5.6? [复制]

    这个问题在这里已经有答案了 我无法在我的电脑上安装 Laravel 5 6wamp服务器 我有以下设置 PHP 版本 7 1 3 作曲家版本1 6 3 2018 01 31 当我尝试通过 Composer 安装 Laravel 应用程序时
  • iPhone 单元测试

    我在大学的 iPhone 开发人员上完成了我的项目 没有做 有用的 单元测试 做了一些简单的测试只是为了放在我的报告上 我正在研究苹果的单元测试套件 逻辑和应用程序测试 但最终使用了 google toolbox for mac 中的 iP
  • 从 localStorage 保存和加载图像

    所以基本上 我试图将图像保存到localStorage 然后在下一页上加载相同的图像 我遇到了这个很好的例子 http jsfiddle net 8V9w6 http jsfiddle net 8V9w6 不过 我完全不知道这是如何工作的
  • 如何在没有表单标签的情况下更改 Mobile Safari 键盘中的返回键文本?

    我想更改 返回 按钮上的文本移动Safari当我的输入元素聚焦时的键盘 我知道你可以这样做
  • 如何继续处理 pandas fillna 中的“None”值

    我有以下字典 fillna value first name Andrii last name Furmanets created at None 当我把那本字典传给fillna I see raise ValueError 必须指定填充方
  • 如何写出 HTML 实体名称( 、<、> 等)

    我如何在 HTML 中编写实体名称而不让它执行其功能 示例 我正在做一个教程 想告诉某人如何在代码中使用不间断空格 nbsp 那么 如何实际写出 n b s p 但它是否流畅且没有空格 您可以使用 amp 代替 So nbsp 将 amp
  • 检查 ArrayList 是否包含给定对象

    假设我有这样的课程 class A int elementA int elementB 我也有一个ArrayList像这样 ArrayList a listObj 如何检查该列表是否包含仅使用某些属性的对象A 例如 仅考虑elementA用
  • 如何使 TFS 2015 中的 PowerShell 任务构建失败

    我试图使 PowerShell 脚本中的某个结果在构建过程中失败 但它对我不起作用 我正在使用 TFS 2015 中的新构建操作并尝试了以下选项 记录命令 https github com Microsoft vso agent tasks
  • nginx 静态索引重定向

    这看起来很荒谬 但我在一个多小时的搜索中没有找到有效的答案 我有一个运行 nginx 的静态网站 恰好位于 Varnish 后面 索引文件称为index html 我想重定向实际访问该 URL 的任何人mydomain com index
  • 计算图像特征配准中的仿射变换矩阵

    我有两张图像 一张是对另一张应用仿射变换的结果 我可以通过使用 OpenCV 中的 ORB create 函数提取点来使用单应性注册它们 但是 我想计算此变换所需的仿射矩阵 有什么方法可以简单地通过两张图像来做到这一点吗 检测旋转的矩形并使
  • 缓存和重用函数会导致 Tornado

    我有一个昂贵的功能要包含在我的 Tornado 应用程序中 功能 返回多个输出 但由于遗留原因 这些输出被访问 分别通过不同的处理程序 有没有办法只执行一次函数 然后将结果重复使用 不同的处理程序并保留 Tornado 的异步行为 from
  • AttributeError:“GridSearchCV”对象没有属性“best_params_”

    网格搜索是一种从我们指定的组合中找到任何模型的最佳参数的方法 我已经通过以下方式对我的模型进行了网格搜索 并希望找到使用此网格搜索识别的最佳参数 from sklearn model selection import GridSearchC
  • 为什么带有 Junit 5 的 spring Boot 2.4.5 和模拟 bean 会抛出 StackOverflowError?

    Context 升级后的gradle自5 5 1 to 7 0 2 已测试 一切正常 spring从2 1 5升级到2 4 1 将测试注释从 junit 4 迁移到 junit 5 Result 单元测试工作 集成测试DO NOT work
  • openshift 上的 Rails 控制台

    我将 Rails 应用程序部署到 openshift 它运行良好 但我无法在生产服务器上运行 rails 控制台 它给了我这个错误 我该如何解决这个问题 我尝试更新 ruby gems 但它也给出了权限被拒绝的错误 我也无法成功 导轨c错误
  • Python 3.5.1 - 将同一输入行上的多个整数读取到列表中

    我正在使用 python 3 5 1 并通过 Windows 上的命令提示符运行我的文件 参数在程序运行后传递 即程序根据先前生成的列表提示输入 我希望在同一行上读取多个数字 并用空格分隔 Python 2 X 中 raw input 不会
  • adb logcat -f log.txt 错误:无法打开输出文件:只读文件系统

    在 Windows win7 上 通过 USB 调试真实手机 我想将 logcat 日志转储到我的 PC 上的文件中 数据速率超出了 Eclipse 的可用范围 我想要整个未过滤的日志 根据logcat 命令行说明 http develop
  • 让 IAlert 作为观察者

    我正在使用最后的硒 一些网站会随机弹出消息 停止正常的测试过程 我的想法是 我需要将 IAlert 作为观察者模式来捕获警报 接受警报并从其停止处理弹出窗口的点继续测试 警报代码 try IAlert alert driver Switch