Javascript 如何在webdriverIO中突出显示WebElement?
我需要突出显示要交互/断言的webelementsJavascript 如何在webdriverIO中突出显示WebElement?,javascript,npm,webdriver-io,Javascript,Npm,Webdriver Io,我需要突出显示要交互/断言的webelements 是否有webdriverIO服务,或者是否有类似Selenium中的javascript executor的javascript代码。有一种方法可以突出显示断言的webelement。如上所述: 或: 'use strict'; var _ = require('underscore'); var async = require('async'); var highlight = function (elements, callback)
是否有webdriverIO服务,或者是否有类似Selenium中的javascript executor的javascript代码。有一种方法可以突出显示断言的webelement。如上所述: 或:
'use strict';
var _ = require('underscore');
var async = require('async');
var highlight = function (elements, callback) {
if (!window.jQuery) {
return callback();
}
var unhighlightable = [
':checkbox',
':radio'
];
var $element = window.jQuery(elements).first();
for (var i = 0, l = unhighlightable.length; i < l; i++) {
if ($element.is(unhighlightable[i])) {
$element = $element.parent();
break;
}
}
var restore = {
backgroundColor: $element.css('backgroundColor')
};
$element.animate({
backgroundColor: '#ffff00'
}, 200, function () {
$element.delay(100).animate(restore, 200, callback);
});
};
/**
* Wait for an element, selected by CSS or XPath selector, for the provided
* amount of milliseconds to be highlighted with jQuery. If multiple elements
* get queryied by the given selector, only the first element will be animated.
* If jQuery is not installed in the host system, nothing happens.
* @param {String} selector Selector that matches elements to hightlight
*/
module.exports = function (selector) {
// Make sure that callback contains chainit callback
var callback = _.last(arguments);
if (!_.isString(selector)) {
return callback(new Error('Number or type of arguments do not agree with "highlight" command.'));
}
var self = this;
var timeout = 5000;
var payload = {};
async.waterfall([
function (callback) {
self.timeoutsAsyncScript(timeout, callback);
},
function (response, callback) {
payload.timeoutsAsyncScript = response;
self.moveToObject(selector, callback);
},
function (value, response, callback) {
payload.moveToObject = response;
self.selectorExecuteAsync(selector, highlight, callback);
}
], function (error, value, response) {
payload.selectorExecuteAsync = response;
callback(error, payload);
});
};
this.client.addCommand('highlight', require('./path/to/above/module'));
this.client.highlight('#element').click('#element');
// not tested
module.exports = function (selector) {
var callback = _.last(arguments);
async.waterfall([
this.highlight.bind(this, selector),
this.click.bind(this, selector)
], callback);
}
// later on...
this.client.addCommand('press', require('path/to/module/that/highlights/and/clicks'));
// later on..
this.client.press('#element');