如何使用 webdriverIO 访问站点 JavaScript 功能
How to access site JavaScript functions using webdriverIO
我在访问可以通过浏览器控制台使用的代码时遇到问题。
在我的例子中,它是一个 Tawk_Api 函数 Tawk_API.hideWidget();
我尝试使用浏览器执行和调用,但输出显示 Tawk.Api is not defined
代码示例
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());
我的应用程序基础对象中有以下代码,它可以帮助您理解调用 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++;
}
});
}
我在访问可以通过浏览器控制台使用的代码时遇到问题。
在我的例子中,它是一个 Tawk_Api 函数 Tawk_API.hideWidget();
我尝试使用浏览器执行和调用,但输出显示 Tawk.Api is not defined
代码示例
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());
我的应用程序基础对象中有以下代码,它可以帮助您理解调用 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++;
}
});
}