将驱动程序对象的单个实例传递给所有其他类(Testng 框架)

2024-01-06

我有一个在类示例中初始化的驱动程序对象。我也想将驱动程序对象传递给其他类,但我得到一个空指针异常。我的代码是

样本类

    public class sample {

    WebDriver driver ;


    @Test(priority=1)

    public void openbrowser(){


        System.setProperty("webdriver.chrome.driver",
                "/home/ss4u/Desktop/Vignesh/jars/chromedriver");

        driver = new ChromeDriver();

        driver.get("http://www.google.com");

        System.out.println(driver instanceof WebDriver);


    }
   @Test(priority=2)
   public void maximize(){

      driver.manage().window().maximize();

   }
   @Test(priority=3)
   public void transfer_instance(){

       sampleone obj=new sampleone(driver);


   }

}

样本类一

public class sampleone {

    WebDriver driver;

    public sampleone(WebDriver driver){

        this.driver=driver;

        System.out.println(driver instanceof WebDriver);

        System.out.println(this.driver instanceof WebDriver);

        System.out.println("constructor2");


    }

  public sampleone(){

        System.out.println("Default constructor called");


    }


    @Test(priority=1)

     public void gettitle(){

          System.out.println(this.driver instanceof WebDriver);

          System.out.println(driver instanceof WebDriver);

          String title=this.driver.getTitle();

          System.out.println(this.driver instanceof WebDriver);

          System.out.println(title);

          Assert.assertEquals(title, "Google");

        }

    @Test(priority=2)

    public void navigate(){

        this.driver.get("https:in.yahoo.com");

    }

}

测试 xml 文件

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="TestNG" verbose="1" >

    <test name="sample test">
    <classes>
      <class name="testsample.sample" />
    </classes>
    </test>

    <test name="sample testone">
    <classes>
      <class name="testsample.sampleone" />
    </classes>
    </test>

</suite>

出现此问题的原因是 iam 调用类时不使用创建的对象,而是使用 testng.xml 文件是否有任何可能的方法来创建新的 java 实例(对所有类通用)或使用所有类中的现有实例


我自己找到了一个解决方案...当我详细阅读 testng 时,我发现 testng xml 文件调用 xml 文件中指定的所有类的默认构造函数。因此,即使我们将对象传递给另一个类,我们也无法执行该操作通过对象,因此发生空指针异常...我发现了两种解决方案,第一个是使用 pagefactory,第二个是为您的测试套件使用通用驱动程序类...这样我们就可以在所有课程

通用驱动类

public class Driver {

    public static WebDriver driver=null;



    public static WebDriver startdriver(String browser){


        if(browser.equalsIgnoreCase("Chrome")){

        System.setProperty("webdriver.chrome.driver", "/home/vicky/Documents/Jars/chromedriver");

        driver=new ChromeDriver();

        }else if(browser.equals("Firefox")){

        driver=new FirefoxDriver();

        }
        return driver;

        }

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

将驱动程序对象的单个实例传递给所有其他类(Testng 框架) 的相关文章

随机推荐

  • 为什么要在 PHP 中合并 $_GET 和 $_POST ?

    我刚刚在研究 WordPress 源代码 PHP 时看到了这段代码 您可以看到它们将所有 get 和 post 值合并 转换为 1 个请求数组 现在据我所知 通过调用 REQUEST 已经可以使用 GET 和 POSTWITHOUT使用 a
  • 错误:任务“:TMessagesProj:dexDebug”执行失败。进程“命令”jdk1.8.0_66\bin\java.exe”已完成,退出值非零 1

    我已经在 android studio 中导入了 Telegram 项目 在花费 4 小时导入所需的库后 我得到了以下错误 我应该怎么办 错误 任务 TMessagesProj dexDebug 执行失败 com android ide c
  • mocha 和 ts-node 找不到本地 .d.ts 文件

    我有以下项目结构 typetests type test ts myproj d ts tsconfig json 我的 tsconfig json 看起来像这样 compilerOptions module commonjs module
  • Openslide-python 导入错误

    我在运行时收到以下错误import openslide从 python 终端内部 code Traceback most recent call last File code
  • 如何从 python 文件内部导入 Boost.Python

    我正在使用 Boost Python 将解释器嵌入到我的 C 可执行文件中并执行一些预先编写的脚本 我已经让它工作了 这样我就可以调用 python 文件中的函数 但是我想使用的 python 代码导入外部文件 并且这些导入失败 因为 没有
  • scanf()、std::cin 在多线程环境中的行为如何?

    我想用一个例子来说明我的问题 假设有一个数组N N gt gt 1 设置为运行此函数的线程 void Process Some thread safe processing which requires in deterministic c
  • Django - 网络商店模型组织

    我开始在 Django 中创建一个网上商店 它将有不同种类的产品 如衬衫 海报 杯子 贴纸 每种类型的产品都会有不同的领域 例如 衬衫有尺寸和颜色选项 贴纸有尺寸选项 海报和马克杯没有选项 做这个的最好方式是什么 遗产 关系 我仍在学习 D
  • 数据读取器跳过第一个结果

    我有一个相当复杂的 SQL 查询 它根据客户 ID 从数据库中提取不同类型的产品 它提取三种不同类型的产品 通过其唯一标识符编号范围进行标识 即 ID 1000 1999 是一种产品类型 2000 2999 是另一种产品类型 3000 39
  • Angular JS - 如何在 ng-repeat 中添加额外的 DIV

    我有一个数组a 1 2 3 4 5 6 Using ng repeat在这个数组上 我创建了 6 个divs 请参考这个plunker http plnkr co edit fe4nTUFQ9ojEyBsyrOtH p preview 有没
  • SQL 存档脚本

    我正在尝试将数据库中的表中的记录存档到存档数据库中的相同表 我需要能够对日期大于三年前的所有记录进行插入 然后删除这些行 然而 这个表有数百万条实时记录 所以我想在一次大约 100 到 1000 个块的循环中运行它 到目前为止 我的存储过程
  • 双三次插值如何工作?

    在阅读有关该主题的文本后 我发现它考虑了 16 个原始相邻像素 我想知道的是它如何计算新像素的颜色值 如果 16 个像素的颜色值已知 如何计算新像素的值 我认为这已经很好地解释了维基百科 http en wikipedia org wiki
  • 如何在 R 中为新函数绘制 CDF 和 PDF

    如何在 R 中绘制 CDF 和 PDF f lt function x 2 a b x 3 exp b x 2 a 范围从 0 到无穷大 我会使用这样的东西 因为我喜欢ggplot2 a lt 1 b lt 2 f lt function
  • Visual Studio 和 Unity 中使用 MDB 文件进行构建后事件

    我在 Unity 中的 MonoBehaviours 源代码不是 Assets 文件夹内的脚本 而是我作为插件添加的已编译 DLL 我在 Visual Studio 中为我的 C 项目添加了生成后事件 以尝试解决每次更改某些内容时都必须复制
  • Node.js 子进程——spawn 和 fork 之间的区别

    这似乎是一个基本问题 但我找不到任何文档 分叉和生成 Node js 进程有什么区别 我读过分叉是生成的一种特殊情况 但是使用它们每个的不同用例 重复是什么 Spawn 是一个旨在运行系统命令的命令 当您运行spawn时 您向其发送一个系统
  • 如何动态下载字体并将其安装到 iOS 应用程序

    客户希望通过 API 调用下载字体来动态地将字体添加到 iOS 应用程序中 这可能吗 我挖掘出的所有资源都展示了如何手动将 ttf 文件拖到 Xcode 并将其添加到 plist 中 是否可以下载字体并以编程方式在客户端上使用它 Thank
  • App Engine 实例中 /_ah/start 的日志

    我的 App Engine 实例中有一个映射到 url ah start 的 servlet 它似乎不起作用 我无法像处理所有其他请求那样从此 servlet 中找到日志记录信息 由于它应该作为单独的线程运行 因此我无法在自定义请求中手动测
  • 未能找到带有哈希字符串 android-23 的目标

    当尝试从 git github com osmdroid osmdroid 构建 OpenStreetMapView 时 出现以下错误 failed to find target with hash string android 23 D
  • 角度依赖注入导出函数

    我正在使用 apollo graphql 它有一个模块 里面有一个函数 export function createApollo httpLink HttpLink connectToDevTools true 在此函数内 您定义 grap
  • mysql n:m 关系:查找具有多个特定关系的行

    我有两个 SQL 表 产品 和 标签 它们具有 n m 关系 使用第三个表 product tags 我想使用查询来查找具有多个特定标签的每个产品 例如 查找与标签 1 23 和 54 相关的所有产品 有没有办法只用一个查询来做到这一点 您
  • 将驱动程序对象的单个实例传递给所有其他类(Testng 框架)

    我有一个在类示例中初始化的驱动程序对象 我也想将驱动程序对象传递给其他类 但我得到一个空指针异常 我的代码是 样本类 public class sample WebDriver driver Test priority 1 public v