【问题标题】:How to attach pageObjects to multiple browser instances in a Single test script in protractor如何在量角器的单个测试脚本中将 pageObjects 附加到多个浏览器实例
【发布时间】:2019-11-19 02:11:41
【问题描述】:

我正在尝试在单个测试脚本中使用具有多个浏览器实例的 Page 对象。我有一个解决方案,但我正在寻找更好的解决方案。

我的 PageObject 文件

var facebook=function(browserInstance){
browserInit=browserInstance;
element=browserInit.element;

    this.email=function(){
    return element(By.id("email"));
    }
    
    this.password=function(){
        return element(By.id("pass"));
    }
    
    this.submit=function(){
        return element(By.xpath("//input[@aria-label='Log In']"));
    }
}
module.exports=facebook;

在多个浏览器中使用 Page 对象


this.When(/^User entered the text in the email field$/,async function(){
// for using in browser2 i need to initialize it
        page2=new facebook(browser2);
        console.log(await page2.title()+" browser2");
        await page2.search().sendKeys("testing");
        browser2.sleep(3000);

//for using in first browser i need to initialize it
        page1=new facebook(firstBrowser);
        console.log(await page1.title()+" browser1")
        await page1.email().sendKeys(testData.Login.CM[0].Username);
        screenshots.takeScreenshot("newScreenshot");
        firstBrowser.sleep(5000);

//now if i want again in browser2.. i need to initialize the page2 with browser instance again like below
     page2=new facebook(browser2);
        console.log(await page2.title()+" browser2");
    });

如何每次都克服这种初始化

【问题讨论】:

    标签: selenium-webdriver protractor


    【解决方案1】:

    我认为您可以在 conf.js 文件中执行类似操作

    baseUrl: 'http://localhost:8081',
    
      onPrepare: function() {
        global.browsers = {
          a: browser,
          b: browser.forkNewDriverInstance()
        };
      }
    

    在spec文件或者步骤定义文件里面,你可以有

    this.When(/^User entered the text in the email field$/,async function(){
            let browser1 = browsers.a;
            let browser2 = browsers.b
    
             //do your stuff
            .
            .
            .
            .
            .
        });
    

    【讨论】:

    • 你能用Pageobjects解释一下吗...我的问题主要是在多个浏览器实例中使用页面对象
    • 我知道这个forNewDriverInstance 方法,我正在寻找如何将浏览器实例附加到页面对象文件。正如我在每次需要将浏览器实例传递给将页面对象初始化给构造函数以供使用
    猜你喜欢
    • 1970-01-01
    • 2017-09-09
    • 1970-01-01
    • 1970-01-01
    • 2015-03-26
    • 2021-03-14
    • 1970-01-01
    • 2016-05-30
    • 1970-01-01
    相关资源
    最近更新 更多