Как получить доступ к функциям JavaScript сайта с помощью webdriverIO - PullRequest
0 голосов
/ 06 ноября 2018

У меня проблема с доступом к коду, который я могу использовать через консоль браузера. В моем случае это функция Tawk_Api Tawk_API.hideWidget(); Я пытался использовать браузер для выполнения и вызова, но в выводе говорилось, что Tawk.Api не определено

Пример кода

 var expect = require('chai').expect;  
    function HideTawk (){
        Tawk_API.hideWidget();
    }
    describe('', function() {
        it('should be able to filter for commands', function () {
            browser.url('https://arutech.ee/en/windows-price-request');
            $('#uheosaline').click();
            browser.execute(HideTawk());
        var results = $$('.commands.property a').filter(function (link) {
            return link.isVisible();
        });
        expect(results.length).to.be.equal(3);
        results[1].click();
        expect($('#getText').getText()).to.be.equal('GETTEXT');
    });
});

Рабочая фиксированная функция:

  function HideTawk (){
        return new Promise(function(resolve, reject) {
            Tawk_API.hideWidget();
        })
    }

И browser.execute(HideTawk()) это ошибка, она должна быть browser.call(HideTawk());

документы: http://webdriver.io/api/utility/call.html

1 Ответ

0 голосов
/ 06 ноября 2018

В базовом объекте моего приложения указан код ниже, он может помочь вам понять вызов API:

_callClientAPI(func, args) {
    let trial = 1;
    return new Promise(async(res, rej) => {
      while (true) {
        if (trial > this._pollTrials) {
          rej(`Could not retrieve the element in this method * this._pollTimeout} seconds.`);
          break;
        }

        let result;
        try {
          result = await func.call(this.client, args, false);
        } catch (e) { }

        if (result && result !== '') {
          res(result);
          break;
        }

        await this.wait();
        trial++;
      }
    });
  }
...