当前位置: 首页 > 知识库问答 >
问题:

如何通过页面对象实例之间它块在夜视?

杜俊远
2023-03-14

我正在使用“BDD描述”在nightwatch中编写ui测试。我遇到的一个问题是,我不能在“it”块之间使用相同的页面对象实例。我必须在每个“it”块中重复同一行代码才能运行测试。我重复下面的代码

const loginTest = browser.page.loginPage();

我有没有办法避免冗余?。这是我的测试。请注意夜视不允许我在描述块下创建实例。

describe('Login Cases', function() {

beforeEach (browser => browser.url(browser.launchUrl)

it('Verify login is successful', async function (browser) {

  const loginTest = browser.page.loginPage();

  await loginTest.waitForElementVisible('@body')
  await loginTest.setValue('@emailInput',browser.globals.Username)
  await loginTest.setValue('@passwordInput',browser.globals.Password)
  await loginTest.click('@submitBtn')
  await loginTest.expect.element('@myAccountBtn').to.be.visible;
});

it('Verify incorrect login', async function (browser) {

  const loginTest = browser.page.loginPage();

  await loginTest.waitForElementVisible('@body')
  await loginTest.setValue('@emailInput','incorrectusername')
  await loginTest.setValue('@passwordInput','incorrectpwd')
  await loginTest.click('@submitBtn')
  await loginTest.expect.element('@myAccountBtn').to.not.be.present;
});

   afterEach (browser => browser.end());
});

This is how i wrote for before block to instantiate the login page object.  
its returning loginTest is not defined.  

beforeEach(async function(browser) {
const loginTest = browser.page.loginPage();
browser => browser.url(browser.launchUrl)

});

当我实例化页面对象时,我通过使用这个关键字解决了这个问题。

beforeEach(async function(browser) {
  this.loginTest = await browser.page.loginPage()
  await this.loginTest.loginSuccess(browser.globals.Username,browser.globals.Password)
  this.myAccounttest = await browser.page.myAccountPage();
});

共有1个答案

秦经义
2023-03-14
 beforeEach(async function(browser) {
  this.loginTest = await browser.page.loginPage()
  await this.loginTest.loginSuccess(browser.globals.Username,browser.globals.Password)
  this.myAccounttest = await browser.page.myAccountPage();
});

当我们启动页面对象时使用this关键字可以解决这个问题。

详细留档可以在这里找到-https://nightwatchjs.org/guide#using-bdd-describe-beta-

 类似资料:
  • 找不到页面对象,我缺少什么? 守夜人0.9.16 在夜视中。json 在实际文件夹中 在MyLegacPage中。js公司 测试中 输出

  • 我需要在python脚本和java引擎之间通过stdin和stdout进行一些进程间通信。 我是否可以将python对象转换为JSON,并将整个对象转换为字符串,通过stdin传递到Java,然后将该字符串转换回JSON进行处理,然后将其作为通过字符串转换的JSON对象返回到python 我只想知道是否可以通过stdin发送一个JSON对象,或者有什么可能的方法可以做到这一点

  • 我的网页上有一个按钮,一旦输入所需的信息,我想点击它。我目前正在使用By来建立页面的所有元素,但想使用WebElements作为这个按钮,然后使用Actions稍后单击它。我应该如何在我的页面对象类中做到这一点。 我尝试了以下方法: 但在以TestNG的形式运行测试类时,它在WebElement行上显示空指针异常。也尝试使用By执行此操作,但按钮无法收到单击。它与WebElements配合得非常好

  • 页面A通过push参数到页面B进行通信 页面A通过千牛存储数据并在B页面获取 用户可以在A页面QN.localstore存储数据,并在页面B取得数据 如果希望A页面的数据,能在B页面使用,可以在A页面使用如下代码设置数据,这里用到了JSSDK的本地存储接口。 QN.localstore.set({ query: { key: 'myData', value:

  • 我在2个不同的私有子网中有2个EC2实例,都位于负载均衡器后面。我想通过域名https url在两个实例中的应用程序之间设置通信。我该怎么做?

  • 本文向大家介绍python实现通过shelve修改对象实例,包括了python实现通过shelve修改对象实例的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了python实现通过shelve修改对象的方法,分享给大家供大家参考。 具体实现方法如下: 本文实例测试环境为Python2.7.6 程序运行结果如下: 实例代码及运行结果均配有较为详尽的注释,帮助大家理解其含义。希望本文所述对大家的