使用基类在多个浏览器中运行 Selenium 测试

2023-12-01

假设我有代码:

namespace SeleniumTests 
{
    [TestFixture(typeof(FirefoxDriver))]
    [TestFixture(typeof(InternetExplorerDriver))]
    public class TestWithMultipleBrowsers<TWebDriver> where TWebDriver : IWebDriver, new()
    {
        private IWebDriver driver;

        [SetUp]
        public void CreateDriver () {
            this.driver = new TWebDriver();
        }

        [Test]
        public void GoogleTest() {
            driver.Navigate().GoToUrl("http://www.google.com/");
            IWebElement query = driver.FindElement(By.Name("q"));
            query.SendKeys("Bread" + Keys.Enter);

            Thread.Sleep(2000);

            Assert.AreEqual("bread - Google Search", driver.Title);
            driver.Quit();
        }
    }
}

我想要块

    [SetUp]
    public void CreateDriver () {
        this.driver = new TWebDriver();
    }

移动到基类。但我不知道在这种情况下如何从基类继承。我该如何处理<TWebDriver> where TWebDriver: IWebDriver, new ()?


这不像您的示例那样使用泛型,而是像依赖注入一样工作。

您需要一种方法来创建网络驱动程序的实例。

public class DriverFactory
{
    public IWebDriver Driver { get; set; }

    public enum DriverType
    {
        IE,
        Firefox,
        Chrome
    }

    public IWebDriver GetDriver(DriverType typeOfDriver)
    {
        if (typeOfDriver == DriverType.IE) return new InternetExplorerDriver();
        if (typeOfDriver == DriverType.Chrome) return new ChromeDriver();
        return new FirefoxDriver(); // return firefox by default
    }
}

然后从您的设置中调用:

[Setup]
public void CreateDriver()
{
    var driverFactory = new DriverFactory();
    this.driver = driverFactory.GetDriver(DriverType.Chrome);
}

您可以继承该类:

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

使用基类在多个浏览器中运行 Selenium 测试 的相关文章

随机推荐

  • awk:根据另一列的值打印列

    我有一个包含六列的文件 我只想打印第六列中值 gt 3 的行的前两列 该语句打印第六列 gt 3 的所有行 awk 6 gt 3 file gt out 此语句打印前两列 awk print 1 2 file gt out 有人知道如何将这
  • 谷歌地图 - 如何设置缩放级别[重复]

    这个问题在这里已经有答案了 我已经尝试了 4 年多来弄清楚如何使用谷歌地图 我欣喜若狂 终于能够生成带有正确地址的地图 这是我的 JavaScript 我现在正在努力解决如何设置缩放级别 我在下面显示的每个地方都尝试过 但没有一个起作用 在
  • Windows 2012R2 中的 Powershell 脚本未运行

    我刚刚将 PowerShell 脚本从 2003 服务器迁移到 2012R2 服务器 但是当我尝试运行 PowerShell 脚本时 它给出了以下错误 我无法设置时间 无法设置日期 无法访问某些文件 无法从脚本运行计划任务 它一直给我访问被
  • .net maui blazor 混合 MSAL 身份验证

    我正在尝试通过适用于 Android 的 net maui blazor 进行身份验证 我已经设置了清单以正确反弹 AAD 并且我可以登录并从 azure 获取我的 ID 问题是令牌无法与 blazor 授权一起使用 我已经按照github
  • 如何使用 Spring Data Solr 实现多核和存储库的自定义 Solr 存储库

    我想使用 spring data solr 在一项服务中访问多个 2 个存储库 从Spring Data Solr 多核和存储库我知道 不幸的是 通过命名空间配置的多核支持是一个悬而未决的问题 您能帮我看一下以下示例吗 如何创建自定义存储库
  • boost asio post 不起作用,io_service::run 在 post 后立即退出

    我正在尝试将 boost 信号与 asio 混合以进行基于调度的处理程序调用 当从线程调用 post 方法时 io service run 立即退出 处理 post 的回调永远不会被调用 回调是一个 C 11 lambda 例程 我粘贴代码
  • 检查android wifi p2p连接是否成功?

    我正在通过 Wifi Direct 连接两个 Android 设备 我在第一台设备上使用 Wifip2pManager createGroup 创建了一个组 现在 在第二台设备上我调用 Wifip2pManager connect 方法 但
  • 弹性搜索 java.lang.NoClassDefFoundError: org/elasticsearch/transport/Netty3Plugin

    我试图通过使用 java api 制作一个基本程序来熟悉elasticsearch 我已经研究答案有一段时间了 但我不确定我是否正在执行错误找到的解决方案 或者只是没有看到真正的问题 我使用的是elasticsearch 5 1 1并下载了
  • 在 Inno Setup 中执行已安装的批处理文件

    我希望安装程序创建一项服务 我通常通过以管理员身份运行命令提示符并转到 bat文件和打字 service bat install 有没有办法在安装程序中执行这个批处理文件 如果是这样 怎么办 我要在脚本中添加什么 该服务文件的位置是 the
  • 禁用导航中当前页面的链接

    我有一个非常标准的网站导航 主要导航是一个 ul 有几个嵌套的 ul 我基本上只是想在用户已经位于该页面上时动态禁用链接 因此 如果我在主页上 则需要禁用主页链接 如果我在联系页面上 则需要禁用联系页面链接 我不想完全删除链接 只需从锚点中
  • 将 Bootstrap 进度条设置为从 0 到 100% 的动画

    我正在使用 Twitter Bootstrap 来构建我的网页 我有这个 HTML 代码 div class btn group div
  • 如何在不查找的情况下连接mongodb中的两个集合

    我有两个收藏 名字是post and comment 模型结构如下 我想使用聚合查询帖子并按评论 如长度总和 排序 目前我可以在以下查询语句中查询帖子评论 如长度总和 我的问题是如何查询帖子并加入评论集合蒙戈版本2 6 我知道Mongo 3
  • 由于环境变量,Eclipse 将无法打开[重复]

    这个问题在这里已经有答案了 我只是重新启动了计算机 没有进行任何更改 突然打不开Eclipse了 相反 我收到此错误消息 Eclipse
  • 在 Rails 中包含特定于页面的 JavaScript 的正确方法

    我想包括这一点 例如 jQuery document ready function my modal modal options 在 Rails 应用程序中的一个特定位置 在我的例子中 该文件名为views modals mymodal h
  • wxWidgets 2.8.12 无法在 Codeblocks 中工作

    我正在学习将 wxWidget 2 8 12 与 Codeblocks 12 11 一起使用 我已按照此站点上的说明安装 wxWidgets 和 Codeblocks http wiki codeblocks org index php t
  • SDWebImage 使用 Swift 将图像设置为 CellView 中的 UIButton

    您好 我正在使用 SDWebImage 将图像设置为 xcode 10 2 1 中的按钮 我正在尝试以下操作 import SDWebImage cell bProfileImage sd setImage with URL string
  • 如何使用 deno 的 Oak 提供图像?

    Deno 似乎针对文本文件 但我还需要为网站提供图像文件 您可以使用send 功能send 旨在将静态内容作为 中间件功能 在最直接的用法中 根是 提供给该功能的请求得到满足 本地文件系统中相对于根目录的文件 请求的路径 const app
  • Magento - 如何启用 SMTP 服务器身份验证和安全传输?

    我想让 SMTP 服务器在 Magento 应用程序 版本 1 7 上工作 所以我在文件中添加了以下代码app code core Mage Core Model Email Template php public function get
  • 散列中的散列 Perl 代码问题

    我尝试使用 perl 代码从下面的命令存储信息 dis ql all runmqsc MQ NAME 假设该命令的输出如下 AMQ8409 Display Queue details QUEUE SYSTEM RETAINED PUB QU
  • 使用基类在多个浏览器中运行 Selenium 测试

    假设我有代码 namespace SeleniumTests TestFixture typeof FirefoxDriver TestFixture typeof InternetExplorerDriver public class T