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

如何在每次场景前重新初始化量角器中的页面对象?

汝臻
2023-03-14

我正在用量角器和cucumber和番茄酱。我将所有页面对象定义为类。在步骤定义中,我初始化所需的每个页面对象,并将其用于各种断言或操作。在运行一个场景时,设置工作正常。然而,如果我想运行更多的场景,我需要找到一种方法来重新初始化每个场景的页面对象,否则量角器将使用先前初始化的对象和为第一个浏览器实例获取的元素,我将得到一个错误。

有什么办法吗?我尝试过在github上查找项目示例,但找不到任何解决我问题的方法。

这是我设置中的一个小示例:

loginpage.po.ts:

export class LoginPage{
    ...     
    async login(username:string,password:string){
        await this.enteremail(username);
        await this.clickNext();
        await this.enterPass(password);
        await this.clickSignIn();
   ...
}
    }

通用步骤:

import { LoginPage} from '../pageobjects/loginPage.po';
...
var loginPage: LoginPage= new LoginPage();

Given('I have the URL ', async () => {
    await browser.get(config.baseUrl);
    await expect(loginPage.isAtSignIn()).to.eventually.be.true;
});

 Given ('I login', async () => {
     await loginPage.login(config.params.username, config.params.password);
 });

共有1个答案

吕飞翼
2023-03-14

在规范文件中创建函数

initializePageObjects() {
var loginPage: LoginPage= new LoginPage();
}

现在在 beforeEach() 中添加此函数,以便为每个 it() 初始化类。

beforeEach(){
await initializePageObjects();
}

希望它能帮助你

 类似资料:
  • 我有一个关于android camerax架构的问题。我使用的是预览视图,效果非常好。问题与片段之间的事务有关。片段1具有previewView。当我切换到fragment2并返回fragment1时,我会再次绑定previewview,使它首先出现黑屏,然后预览显示在屏幕上。我不想看到黑屏。这个问题有什么解决办法吗?

  • 问题内容: 我有一个初始化为的变量: 问题是,在某个时候,我需要重置此变量,以便在更改后可以再次初始化。但是如果我将类设置为可选的话,LLVM在尝试将它设置为时会给我一个错误。如果我只是使用将其重置在代码中的某个位置,它将最终显示为。 有没有一种方法可以使用并允许自己重置? 问题答案: 懒惰是明确的仅一次初始化。您要采用的模型可能只是按需初始化模型: 现在,只要是,它会被初始化并返回。可以通过设置

  • 下面的代码片段: 我尝试使用“automatickeepaliveClientMixin和@override bool get wantKeepAlive=>true”-即保持它活动,以便下次调用它时,它不会再次调用initState(),但是它没有工作。

  • 问题内容: 是否可以在运行时重新初始化Spring Bean? 我的Bean使用静态设置,在某些情况下会更改,然后我必须重新初始化Bean。 问题答案: 你可以通过三种方法在spring上下文中更新单例bean,可以选择一种适合你的用例: 在Bean中重新加载方法在Bean中 创建一个方法,该方法将更新/重新加载其属性。根据你的触发器,从spring上下文访问bean,然后调用reload方法更新

  • 我的Bean使用静态设置,在某些情况下,这些设置会改变,然后我必须重新初始化Bean。

  • 在app开发中,若要使用HTML5+扩展api,必须等plusready事件发生后才能正常使用,mui将该事件封装成了mui.plusReady()方法,涉及到HTML5+的api,建议都写在mui.plusReady方法中。如下为打印当前页面URL的示例: mui.plusReady(function(){ console.log("当前页面URL:"+plus.webview.cu

  • 问题内容: 我正在使用SmoothState.js进行页面转换,它可以正常工作并使用ajax加载新页面。但是,我在每个页面上都有JS脚本需要重新初始化,而且我无法使它们始终出现在页面转换中。 根据常见问题解答: smoothState.js提供了onAfter回调函数,该函数可让您重新运行插件。如果您不熟悉AJAX的工作原理,这可能会很棘手。 当您在$(document).ready()上运行插件

  • 每当从我的要素文件开始执行新方案时,就会启动一个新浏览器。我希望浏览器只在我的第一个场景执行时启动一次,在场景的其余部分,不应打开新的浏览器。 我已经把我的浏览器打开代码写进了类下的注释中。