Browserstack - 脚本不适用于所有设备

时间:2018-03-26 13:49:52

标签: javascript protractor browserstack

我目前正在设计一个量角器脚本,允许我连接到任何网站,以便执行每日测试,看看我们的平台是否正常运行。

为此,我们使用了BrowserStack,这将允许我们进行E2E测试,并检查我们的平台是否与我们的所有格式兼容(可能会查看是否存在错误)。

作为这项技术的初学者,我目前正在经历一个从今天早上起一直困扰着我的错误。我的脚本会产生很多错误,并且在某些平台上无法正常工作。

我会让你详细了解我目前能够发展的东西。没有什么复杂的。

文件test.conf.js:

exports.config = {
    'specs': [ 'lavan/single.js' ],
    'seleniumAddress': 'http://hub-cloud.browserstack.com/wd/hub',

    'commonCapabilities': {
        'browserstack.user': process.env.BROWSERSTACK_USERNAME || 'BROWSERSTACK_USERNAME',
        'browserstack.key': process.env.BROWSERSTACK_ACCESS_KEY || 'BROWSERSTACK_ACCESS_KEY',
        'build': 'SmartscreeningIO',
        'name': 'Connexion',
        'browserstack.local': true,
        'browserstack.debug': 'true'
    },

    'multiCapabilities': [
        {
            'browserName': 'Chrome'
        },
        {
            'browserName' : 'Firefox',
            'browser_version' : '60.0 beta',
            'os' : 'Windows',
            'os_version' : '10',
            'resolution' : '2048x1536',
        },
        {
            'browserName' : 'Safari',
            'browser_version' : '11.0',
            'os' : 'OS X',
            'os_version' : 'High Sierra',
            'resolution' : '1920x1080',
        },
        {
            'browserName' : 'iPhone',
            'device' : 'iPhone 8',
            'realMobile' : 'true',
            'os_version' : '11.0',
        },
        {
            'browserName' : 'android',
            'device' : 'Samsung Galaxy S8',
            'realMobile' : 'true',
            'os_version' : '7.0',
        }
    ],
};

// Code to support common capabilities
exports.config.multiCapabilities.forEach(function(caps){
    for(var i in exports.config.commonCapabilities) caps[i] = caps[i] || exports.config.commonCapabilities[i];
});

文件test.js

describe('Smartscreening connexion', function() {
    it('can click to button after fill textfields', function(done) {
        browser.driver.get('http://smartscreening.io/#/login/company').then(function() {
            element(by.name('mail')).sendKeys(mail);
            element(by.name('pwd')).sendKeys(pwd);
            element(by.buttonText('Continuer')).click();
        });
    });
});
你可以帮助我解决我的烦恼吗? 非常感谢你

1 个答案:

答案 0 :(得分:0)

在你的it函数中有一个参数会导致它尝试异步调用。

using System;
using System.Threading;
using System.Windows.Forms;

namespace ToolTipTesting
{
   public partial class Form1 : Form
   {
      Thread _thread = null;
      bool _run = false;
      bool _exit = false;

      public Form1()
      {
         var tsbStart = new ToolStripButton();
         tsbStart.Text = "Start";
         tsbStart.Click += (s,e) => _run = true;

         var tsbStop  = new ToolStripButton();
         tsbStop.Text = "Stop";
         tsbStop.Click += (s,e) => _run = false;

         var tslValue = new ToolStripLabel();

         var ts = new ToolStrip();

         ts.Items.Add(tsbStart);
         ts.Items.Add(tsbStop);
         ts.Items.Add(tslValue);

         Controls.Add(ts);

         _thread = new Thread(() =>
         {
            int i = 0;

            while (!_exit)
            {
               if(_run)
               { 
                  var result = BeginInvoke(new Action(() => { tslValue.Text = (i++).ToString(); ts.Update(); } ));

                  while(!_exit && !result.IsCompleted)
                     result.AsyncWaitHandle.WaitOne(10);
               }
               else
               {
                  Thread.Sleep(100);
               }
            }
         });

         FormClosing += (s,e) =>
         { 
            _exit = true;
            _thread.Join();
         };

         _thread.Start();
      }
   }
}

完成参数的命名并没有什么区别,它的存在才是最重要的。我从太多的复制/粘贴中遇到了这个问题。

信用:jasmine: Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL