当前位置: 首页 > 面试题库 >

将IAlert设为观察者

从开济
2023-03-14
问题内容

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

我在想的是,我需要做IAlert as Observer模式,以捕获警报并接受它,并从其停止处理弹出窗口的点继续进行测试。

IAlert代码:

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

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

谢谢


问题答案:

由于在尝试执行其他操作时弹出窗口很重要,因此我建议采用以下方法:EventFiringWebDriver允许您定义将在特定事件之前或之后立即运行的自定义代码。在这里查看示例

不幸的是,我很久没有在.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
     }
}

因此,现在,每次脚本要单击某项时,它都会首先检查弹出窗口,并在需要时接受它。



 类似资料:
  • #include <stdio.h> #include <pthread.h> #include <unistd.h> int a = 0; void *thread1_func(void *p_arg) { while (1) { a++; sleep(10); } } int m

  • 问题内容: 我正在尝试将项目设置为表视图,但是setitems方法需要一个可观察的列表,而我的模型中却有一个可观察的集合.FXCollections实用程序类没有给定可观察的集合来创建可观察的列表的方法。类强制转换异常(按预期)。 目前,我正在使用这种代码 而且我有一些问题: 在表中进行编辑是否会按预期更新基础集? 这是这样做的“正确”方法吗 简而言之,我需要样式指南或最佳做法,以便在可观察集和可

  • 问题内容: 我一直在阅读Observer模式,以保持UI处于最新状态,但仍然看不到它的用途。即使在我的特定对象中通知了我的MainActivity然后运行update();方法我仍然无法使用Pet对象来获取更新值,因为该对象是在Oncreate中创建的…而我只是无法创建新对象,因为那时变量会有所不同..这是我的实施,它似乎不起作用。 观察者/ MainActivity 可观察/宠物 问题答案: 首

  • 7. 观察者(Observer) Intent 定义对象之间的一对多依赖,当一个对象状态改变时,它的所有依赖都会收到通知并且自动更新状态。 主题(Subject)是被观察的对象,而其所有依赖者(Observer)称为观察者。 Class Diagram 主题(Subject)具有注册和移除观察者、并通知所有观察者的功能,主题是通过维护一张观察者列表来实现这些操作的。 观察者(Observer)的注

  • #include <stdio.h> #include <pthread.h> int a = 0; void *thread1_func(void *p_arg) { while (1) { printf("%d\n", a); sleep(10); } } int main(v