【问题标题】:Is it possible to run an incognito with normal Chrome browser instance with Protractor?是否可以使用 Protractor 使用普通 Chrome 浏览器实例运行隐身模式?
【发布时间】:2015-05-14 04:46:40
【问题描述】:

我需要在两个具有相同视图但使用不同用户登录的浏览器中运行测试。由于 Chrome 中多个窗口之间共享 cookie,服务器正在更改 cookie 并注销第一个用户,因此我无法运行测试。所以,我想知道是否可以同时运行 Chrome 普通实例和隐身实例。

另一种选择是运行 Chrome 和 Firefox 实例,但我需要控制每个浏览器的操作。

【问题讨论】:

    标签: google-chrome protractor selenium-chromedriver


    【解决方案1】:

    您可以使用两种浏览器。运行脚本以找出您所在的浏览器,然后根据该脚本让不同的用户登录。 首先,获取浏览器,这里有一个脚本:

    browser.getCapabilities()
    .then(function(s) {
    
    var platform = s.caps_.platform,
        browserName = s.caps_.browserName,
        browserVersion = s.caps_.version,
        shortVersion = browserVersion.split('.')[0],
        ie = /i.*explore/.test(browserName),
        ff = /firefox/.test(browserName),
        ch = /chrome/.test(browserName),
        sa = /safari/.test(browserName),
        shortName;
    
    if (ie) {
        shortName = 'ie';
    } else if (ff) {
        shortName = 'ff';
    } else if (ch) {
        shortName = 'ch';
    } else if (sa) {
        shortName = 'sa';
    } else {
        throw new Exception('Unsupported browser: '+ browserName);
    }
    
    // Returns one of these: ['ch', 'ff', 'sa', 'ie']
    browser.getShortBrowserName = function() {
        return shortName;
    };
    
    // Returns one of these: ['ch33', 'ff27', 'sa7', 'ie11', 'ie10', 'ie9']
    browser.getShortNameVersionAll = function() {
        return shortName + shortVersion;
    };
    
    // Returns one of these: ['ch', 'ff', 'sa', 'ie11', 'ie10', 'ie9']
    browser.getShortNameVersion = function() {
        if (ie) {
            return shortName + shortVersion;
        } else {
            return shortName;
        }
    };
    
    // Return if current browser is IE, optionally specifying if it is a particular IE version
    browser.isIE = function(ver) {
        if (!ver) {
            return ie;
        } else {
            return ie && ver.toString() === shortVersion;
        }
    };
    
    browser.isSafari = function() {
        return sa;
    };
    
    browser.isFirefox = function() {
        return ff;
    };
    
    // Return if current browser is Chrome, optionally specifying if it is a particular Chrome version
    browser.isChrome = function(ver) {
        if (!ver) {
            return ch;
        } else {
            return ch && ver.toString() === shortVersion;
        }
    };
    

    那么你需要一个函数来知道要登录哪个用户:

    global.getUserAndPassword = function getUser() {
    
    var rv_user = process.env.PROTRACTOR_USER;
    
    if (browser.isFireFox() && typeof process.env.PROTRACTOR_USER_2 !== 'undefined') {
      rv_user = process.env.PROTRACTOR_USER_2;
    }
    
    return [rv_user, process.env.PROTRACTOR_PASSWORD];
    

    };

    然后是登录功能:

    global.loginFn = function loginFn() {
     var user_and_pass = getUserAndPassword();
    
     username.sendKeys(user_and_pass[0]);
     password.sendKeys(user_and_pass[1]);
     login.click();
    };
    

    【讨论】:

      猜你喜欢
      • 2013-10-02
      • 2022-01-05
      • 2016-04-18
      • 2011-02-24
      • 2018-02-01
      • 2019-03-26
      • 1970-01-01
      • 1970-01-01
      • 2017-05-20
      相关资源
      最近更新 更多