How to use parseCssRule method in Appium Xcuitest Driver

Best JavaScript code snippet using appium-xcuitest-driver

QuickTag.js

Source:QuickTag.js Github

copy

Full Screen

...204 *205 * @param {Object} $valueSelect206 */207 captureClasses: function ($valueSelect) {208 this.parseCssRule(this.editor.document.styleSheets, $valueSelect);209 },210 /**211 * @param {Object} rules212 * @param {Object} $valueSelect213 */214 parseCssRule: function (rules, $valueSelect) {215 for (var i = 0, n = rules.length; i < n; i++) {216 var rule = rules[i];217 if (rule.selectorText) {218 if (/^(\w*)\.(\w+)$/.test(rule.selectorText)) {219 $valueSelect.append(220 $('<option />', {221 value: RegExp.$2 + '"',222 'data-attribute': 'class'223 }).text(rule.selectorText)224 );225 }226 } else {227 // ImportRule (Mozilla)228 if (rule.styleSheet) {229 try {230 if (rule.styleSheet.cssRules) {231 this.parseCssRule(rule.styleSheet.cssRules, $valueSelect);232 }233 } catch (e) {234 if (/Security/i.test(e)) {235 this.appendToLog('parseCssRule', 'A security error occurred. Make sure all stylesheets are accessed from the same domain/subdomain and using the same protocol as the current script.', 'error');236 } else {237 throw e;238 }239 }240 }241 // MediaRule (Mozilla)242 if (rule.cssRules) {243 this.parseCssRule(rule.cssRules, $valueSelect);244 }245 // IE imports246 if (rule.imports) {247 this.parseCssRule(rule.imports, $valueSelect);248 }249 if (rule.rules) {250 this.parseCssRule(rule.rules, $valueSelect);251 }252 }253 }254 },255 /**256 * Handler invoked when a tag is selected257 * Update the attributes combo and the inserted tag field258 *259 * @param {Event} e260 */261 onTagSelect: function (e) {262 var $me = $(e.currentTarget),263 tag = decodeURI($me.val());264 this.filterAttributes(e);...

Full Screen

Full Screen

quick-tag.js

Source:quick-tag.js Github

copy

Full Screen

...216 /*217 * Add a record for each class selector found in the stylesheets218 */219 captureClasses: function (valueStore) {220 this.parseCssRule(this.editor.document.styleSheets, valueStore);221 },222 parseCssRule: function (rules, valueStore) {223 Ext.each(rules, function (rule) {224 if (rule.selectorText) {225 if (/^(\w*)\.(\w+)$/.test(rule.selectorText)) {226 valueStore.add(new this.valueRecord({227 attribute: 'class',228 text: rule.selectorText,229 value: RegExp.$2 + '"'230 }));231 }232 } else {233 // ImportRule (Mozilla)234 if (rule.styleSheet) {235 try {236 this.parseCssRule(rule.styleSheet.cssRules, valueStore);237 } catch (e) {238 if (/Security/i.test(e)) {239 this.appendToLog('parseCssRule', 'A security error occurred. Make sure all stylesheets are accessed from the same domain/subdomain and using the same protocol as the current script.', 'error');240 }241 }242 }243 // MediaRule (Mozilla)244 if (rule.cssRules) {245 this.parseCssRule(rule.cssRules, valueStore);246 }247 // IE imports248 if (rule.imports) {249 this.parseCssRule(rule.imports, valueStore);250 }251 if (rule.rules) {252 this.parseCssRule(rule.rules, valueStore);253 }254 }255 }, this);256 },257 /*258 * Handler invoked when a tag is selected259 * Update the attributes combo and the inserted tag field260 */261 onTagSelect: function (tagCombo, tagRecord) {262 var tag = tagRecord.get('value');263 this.filterAttributes();264 this.attributeCombo.clearValue();265 this.attributeCombo.show();266 this.valueCombo.hide();...

Full Screen

Full Screen

text-style.js

Source:text-style.js Github

copy

Full Screen

...278 this.cssLoaded = true;279 for (var i = 0; i < iframe.styleSheets.length; i++) {280 if (!Ext.isIE) {281 try {282 newCssArray = this.parseCssRule(iframe.styleSheets[i].cssRules, newCssArray);283 } catch(e) {284 this.cssLoaded = false;285 }286 } else {287 try{288 // @import StyleSheets (IE)289 if (iframe.styleSheets[i].imports) {290 newCssArray = this.parseCssIEImport(iframe.styleSheets[i].imports, newCssArray);291 }292 if (iframe.styleSheets[i].rules) {293 newCssArray = this.parseCssRule(iframe.styleSheets[i].rules, newCssArray);294 }295 } catch(e) {296 this.cssLoaded = false;297 }298 }299 }300 return newCssArray;301 },302 303 parseCssIEImport : function(cssIEImport, cssArray) {304 var newCssArray = new Object();305 newCssArray = cssArray;306 for (var i=0; i < cssIEImport.length; i++) {307 if (cssIEImport[i].imports) {308 newCssArray = this.parseCssIEImport(cssIEImport[i].imports, newCssArray);309 }310 if (cssIEImport[i].rules) {311 newCssArray = this.parseCssRule(cssIEImport[i].rules, newCssArray);312 }313 }314 return newCssArray;315 },316 317 parseCssRule : function(cssRules, cssArray) {318 var newCssArray = new Object();319 newCssArray = cssArray;320 for (var rule = 0; rule < cssRules.length; rule++) {321 // StyleRule322 if (cssRules[rule].selectorText) {323 newCssArray = this.parseSelectorText(cssRules[rule].selectorText, newCssArray);324 } else {325 // ImportRule (Mozilla)326 if (cssRules[rule].styleSheet) {327 newCssArray = this.parseCssRule(cssRules[rule].styleSheet.cssRules, newCssArray);328 }329 // MediaRule (Mozilla)330 if (cssRules[rule].cssRules) {331 newCssArray = this.parseCssRule(cssRules[rule].cssRules, newCssArray);332 }333 }334 }335 return newCssArray;336 },337 338 parseSelectorText : function(selectorText, cssArray) {339 var cssElements = new Array();340 var cssElement = new Array();341 var tagName, className;342 var newCssArray = new Object();343 newCssArray = cssArray;344 if (selectorText.search(/:+/) == -1) {345 // split equal Styles (Mozilla-specific) e.q. head, body {border:0px}...

Full Screen

Full Screen

block-style.js

Source:block-style.js Github

copy

Full Screen

...481 this.cssLoaded = true;482 for (var i = 0; i < iframe.styleSheets.length; i++) {483 if (!Ext.isIE) {484 try {485 newCssArray = this.parseCssRule(iframe.styleSheets[i].cssRules, newCssArray);486 } catch(e) {487 this.cssLoaded = false;488 }489 } else {490 try{491 // @import StyleSheets (IE)492 if (iframe.styleSheets[i].imports) {493 newCssArray = this.parseCssIEImport(iframe.styleSheets[i].imports, newCssArray);494 }495 if (iframe.styleSheets[i].rules) {496 newCssArray = this.parseCssRule(iframe.styleSheets[i].rules, newCssArray);497 }498 } catch(e) {499 this.cssLoaded = false;500 }501 }502 }503 return newCssArray;504 },505 506 /*507 * This function parses IE import rules508 */509 parseCssIEImport : function(cssIEImport, cssArray) {510 var newCssArray = new Object();511 newCssArray = cssArray;512 for (var i=0; i < cssIEImport.length; i++) {513 if (cssIEImport[i].imports) {514 newCssArray = this.parseCssIEImport(cssIEImport[i].imports, newCssArray);515 }516 if (cssIEImport[i].rules) {517 newCssArray = this.parseCssRule(cssIEImport[i].rules, newCssArray);518 }519 }520 return newCssArray;521 },522 523 /*524 * This function parses gecko css rules525 */526 parseCssRule : function(cssRules, cssArray) {527 var newCssArray = new Object();528 newCssArray = cssArray;529 for (var rule = 0; rule < cssRules.length; rule++) {530 // StyleRule531 if (cssRules[rule].selectorText) {532 newCssArray = this.parseSelectorText(cssRules[rule].selectorText, newCssArray);533 } else {534 // ImportRule (Mozilla)535 if (cssRules[rule].styleSheet) {536 newCssArray = this.parseCssRule(cssRules[rule].styleSheet.cssRules, newCssArray);537 }538 // MediaRule (Mozilla)539 if (cssRules[rule].cssRules) {540 newCssArray = this.parseCssRule(cssRules[rule].cssRules, newCssArray);541 }542 }543 }544 return newCssArray;545 },546 547 /*548 * This function parses each selector rule549 */550 parseSelectorText : function(selectorText, cssArray) {551 var cssElements = new Array();552 var cssElement = new Array();553 var tagName, className;554 var newCssArray = new Object();...

Full Screen

Full Screen

cssHoverForOldBrowser.js

Source:cssHoverForOldBrowser.js Github

copy

Full Screen

1window.CSSHover = (function(){2 var REG_INTERACTIVE = /(^|\s)((([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active|focus))/i,3 REG_AFFECTED = /(.*?)\:(hover|active|focus)/i,4 REG_PSEUDO = /[^:]+:([a-z-]+).*/i,5 REG_SELECT = /(\.([a-z0-9_-]+):[a-z]+)|(:[a-z]+)/gi,6 REG_CLASS = /\.([a-z0-9_-]*on(hover|active|focus))/i,7 REG_MSIE = /msie (5|6|7)/i,8 REG_COMPAT = /backcompat/i;9 var CSSHOVER_PREFIX = 'csh-';10 var CSSHover = {11 elements: [],12 callbacks: {},13 init:function() {14 if(!REG_MSIE.test(navigator.userAgent) && !REG_COMPAT.test(window.document.compatMode)) return;15 var sheets = window.document.styleSheets, l = sheets.length;16 for(var i=0; i&lt;l; i++) {17 this.parseStylesheet(sheets[i]);18 }19 },20 parseStylesheet:function(sheet) {21 if(sheet.imports) {22 try {23 var imports = sheet.imports, l = imports.length;24 for(var i=0; i&lt;l; i++) {25 this.parseStylesheet(sheet.imports[i]);26 }27 } catch(securityException){}28 }29 try {30 var rules = sheet.rules, l = rules.length;31 for(var j=0; j&lt;l; j++) {32 this.parseCSSRule(rules[j], sheet);33 }34 } catch(securityException){}35 },36 parseCSSRule:function(rule, sheet) {37 var select = rule.selectorText;38 if(REG_INTERACTIVE.test(select)) {39 var style = rule.style.cssText,40 affected = REG_AFFECTED.exec(select)[1],41 pseudo = select.replace(REG_PSEUDO, 'on$1'),42 newSelect = select.replace(REG_SELECT, '.$2' + pseudo),43 className = REG_CLASS.exec(newSelect)[1];44 var hash = affected + className;45 if(!this.callbacks[hash]) {46 sheet.addRule(affected, CSSHOVER_PREFIX + className + ':expression(CSSHover(this, "'+pseudo+'", "'+className+'"))');47 this.callbacks[hash] = true;48 }49 sheet.addRule(newSelect, style);50 }51 },52 patch:function(node, type, className) {53 var property = CSSHOVER_PREFIX + className;54 if(node.style[property]) {55 node.style[property] = null;56 }57 if(!node.csshover) node.csshover = [];58 if(!node.csshover[className]) {59 node.csshover[className] = true;60 var element = new CSSHoverElement(node, type, className);61 this.elements.push(element);62 }63 return type;64 },65 unload:function() {66 try {67 var l = this.elements.length;68 for(var i=0; i&lt;l; i++) {69 this.elements[i].unload();70 }71 this.elements = [];72 this.callbacks = {};73 } catch (e) {74 }75 }76 };77 window.attachEvent('onbeforeunload', function(){78 CSSHover.unload();79 });80 var CSSEvents = {81 onhover: { activator: 'onmouseenter', deactivator: 'onmouseleave' },82 onactive: { activator: 'onmousedown', deactivator: 'onmouseup' },83 onfocus: { activator: 'onfocus', deactivator: 'onblur' }84 };85 function CSSHoverElement(node, type, className) {86 this.node = node;87 this.type = type;88 var replacer = new RegExp('(^|\\s)'+className+'(\\s|$)', 'g');89 this.activator = function(){ node.className += ' ' + className; };90 this.deactivator = function(){ node.className = node.className.replace(replacer, ' '); };91 node.attachEvent(CSSEvents[type].activator, this.activator);92 node.attachEvent(CSSEvents[type].deactivator, this.deactivator);93 }94 CSSHoverElement.prototype = {95 unload:function() {96 this.node.detachEvent(CSSEvents[this.type].activator, this.activator);97 this.node.detachEvent(CSSEvents[this.type].deactivator, this.deactivator);98 this.activator = null;99 this.deactivator = null;100 this.node = null;101 this.type = null;102 }103 };104 return function(node, type, className) {105 if(node) {106 return CSSHover.patch(node, type, className);107 } else {108 CSSHover.init();109 }110 }; ...

Full Screen

Full Screen

csshover.js

Source:csshover.js Github

copy

Full Screen

1<attach event="ondocumentready" handler="parseStylesheets" />2<script>3/**4 * Whatever:hover - V2.02.060206 - hover, active & focus5 * ------------------------------------------------------------6 * (c) 2005 - Peter Nederlof7 * Peterned - http://www.xs4all.nl/~peterned/8 * License - http://creativecommons.org/licenses/LGPL/2.1/9 *10 * Whatever:hover is free software; you can redistribute it and/or11 * modify it under the terms of the GNU Lesser General Public12 * License as published by the Free Software Foundation; either13 * version 2.1 of the License, or (at your option) any later version.14 *15 * Whatever:hover is distributed in the hope that it will be useful,16 * but WITHOUT ANY WARRANTY; without even the implied warranty of17 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU18 * Lesser General Public License for more details.19 *20 * Credits and thanks to:21 * Arnoud Berendsen, Martin Reurings, Robert Hanson22 *23 * howto: body { behavior:url("csshover.htc"); }24 * ------------------------------------------------------------25 */2627var csshoverReg = /(^|\s)((([^a]([^ ]+)?)|(a([^#.][^ ]+)+)):(hover|active))|((a|input|textarea)([#.][^ ]+)?:unknown)/i,28currentSheet, doc = window.document, hoverEvents = [], activators = {29 onhover:{on:'onmouseover', off:'onmouseout'},30 onactive:{on:'onmousedown', off:'onmouseup'},31 onunknown:{on:'onfocus', off:'onblur'}32}3334function parseStylesheets() {35 if(!/MSIE (5|6)/.test(navigator.userAgent)) return;36 window.attachEvent('onunload', unhookHoverEvents);37 var sheets = doc.styleSheets, l = sheets.length;38 for(var i=0; i<l; i++) 39 parseStylesheet(sheets[i]);40}41 function parseStylesheet(sheet) {42 if(sheet.imports) {43 try {44 var imports = sheet.imports, l = imports.length;45 for(var i=0; i<l; i++) parseStylesheet(sheet.imports[i]);46 } catch(securityException){}47 }4849 try {50 var rules = (currentSheet = sheet).rules, l = rules.length;51 for(var j=0; j<l; j++) parseCSSRule(rules[j]);52 } catch(securityException){}53 }5455 function parseCSSRule(rule) {56 var select = rule.selectorText, style = rule.style.cssText;57 if(!csshoverReg.test(select) || !style) return;58 59 var pseudo = select.replace(/[^:]+:([a-z-]+).*/i, 'on$1');60 var newSelect = select.replace(/(\.([a-z0-9_-]+):[a-z]+)|(:[a-z]+)/gi, '.$2' + pseudo);61 var className = (/\.([a-z0-9_-]*on(hover|active|unknown))/i).exec(newSelect)[1];62 var affected = select.replace(/:(hover|active|unknown).*$/, '');63 var elements = getElementsBySelect(affected);64 if(elements.length == 0) return;6566 currentSheet.addRule(newSelect, style);67 for(var i=0; i<elements.length; i++)68 new HoverElement(elements[i], className, activators[pseudo]);69 }7071function HoverElement(node, className, events) {72 if(!node.hovers) node.hovers = {};73 if(node.hovers[className]) return;74 node.hovers[className] = true;75 hookHoverEvent(node, events.on, function() { node.className += ' ' + className; });76 hookHoverEvent(node, events.off, function() { node.className = node.className.replace(new RegExp('\\s+'+className, 'g'),''); });77}78 function hookHoverEvent(node, type, handler) {79 node.attachEvent(type, handler);80 hoverEvents[hoverEvents.length] = { 81 node:node, type:type, handler:handler 82 };83 }8485 function unhookHoverEvents() {86 for(var e,i=0; i<hoverEvents.length; i++) {87 e = hoverEvents[i]; 88 e.node.detachEvent(e.type, e.handler);89 }90 }9192function getElementsBySelect(rule) {93 var parts, nodes = [doc];94 parts = rule.split(' ');95 for(var i=0; i<parts.length; i++) {96 nodes = getSelectedNodes(parts[i], nodes);97 } return nodes;98}99 function getSelectedNodes(select, elements) {100 var result, node, nodes = [];101 var identify = (/\#([a-z0-9_-]+)/i).exec(select);102 if(identify) {103 var element = doc.getElementById(identify[1]);104 return element? [element]:nodes;105 }106 107 var classname = (/\.([a-z0-9_-]+)/i).exec(select);108 var tagName = select.replace(/(\.|\#|\:)[a-z0-9_-]+/i, '');109 var classReg = classname? new RegExp('\\b' + classname[1] + '\\b'):false;110 for(var i=0; i<elements.length; i++) {111 result = tagName? elements[i].all.tags(tagName):elements[i].all; 112 for(var j=0; j<result.length; j++) {113 node = result[j];114 if(classReg && !classReg.test(node.className)) continue;115 nodes[nodes.length] = node;116 }117 } 118 119 return nodes;120 } ...

Full Screen

Full Screen

sass-map.js

Source:sass-map.js Github

copy

Full Screen

...88 lines.push(i);89 }90 return lines;91}92function parseCssRule(rule, cssMap, lineVarMap) {93 const decls = {};94 if (rule.declarations && Array.isArray(rule.declarations)) {95 rule.declarations.forEach(decl => {96 if (decl.type === 'declaration') {97 const cssLines = getPosLines(decl.position);98 const scssLines = [];99 cssLines.forEach(line => {100 if (line in cssMap) {101 mergeArray(scssLines, cssMap[line].filter(l => {102 return l in lineVarMap;103 }));104 }105 });106 if (scssLines.length) {107 decls[decl.property] = scssLines;108 }109 }110 });111 }112 if (Object.keys(decls).length) {113 return {114 selector: mergeSelector(rule.selectors),115 decls,116 };117 }118}119/**120 * Walk css rule121 *122 * return [{123 * selector: String,124 * decls: [{125 * <String>: [ ... ],126 * ...127 * }, ...]128 * }, ...]129 *130 * @param {String} css Css Source131 * @param {Object} cssMap Css-Scss Map132 * @param {Object} lineVarMap line-var map133 * @return {Array} Selector List134 */135function walkCss(css, cssMap, lineVarMap) {136 const rules = cssParser.parse(css).stylesheet.rules;137 const selectors = [];138 rules.forEach(item => {139 if (item.type === 'rule') {140 const s = parseCssRule(item, cssMap, lineVarMap);141 if (s) {142 selectors.push(s);143 }144 } else if (Array.isArray(item.rules)) {145 item.rules.forEach(rule => {146 const s = parseCssRule(rule, cssMap, lineVarMap);147 if (s) {148 selectors.push(s);149 }150 });151 }152 });153 return selectors;154}155function getSassMap(scss, css, cssMap, varMap) {156 // retrive css lines157 const scssLines = [];158 for (const i in cssMap) {159 cssMap[i].forEach(line => {160 if (scssLines.indexOf(line) < 0) {...

Full Screen

Full Screen

Using AI Code Generation

copy

Full Screen

1const { parseCssRule } = require(‘appium-xcuitest-driver/lib/commands/execute.js’);2const { parseCssRule } = require(‘appium-xcuitest-driver/lib/commands/execute.js’);3const { parseCssRule } = require(‘appium-xcuitest-driver/lib/commands/execute.js’);4const { parseCssRule } = require(‘appium-xcuitest-driver/lib/commands/execute.js’);5const { parseCssRule } = require(‘appium-xcuitest-driver/lib/commands/execute.js’);6const { parseCssRule } = require(‘appium-xcuitest-driver/lib/commands/execute.js’);7const { parseCssRule } = require(‘appium-xcuitest-driver/lib/commands/execute.js’);8const { parseCssRule } = require(‘appium-xcuitest-driver/lib/commands/execute.js’);9const { parseCssRule } = require(‘appium-xcuitest-driver/lib/commands/execute.js’);10const { parseCssRule } = require(‘appium-xcuitest-driver/lib/commands/execute.js’);11const { parseCssRule } = require(‘appium-xcuitest-driver/lib/commands/execute.js’);12const { parseCssRule } = require(‘appium-xcuitest-driver/lib/commands/execute.js’);

Full Screen

Using AI Code Generation

copy

Full Screen

1const { parseCss } = require('appium-xcuitest-driver').css-converter;2const css = 'XCUIElementTypeWindow[visible="true"]';3const xcuiType = 'XCUIElementTypeWindow';4const attrs = { visible: 'true' };5const result = parseCss(css);6if (result.type === xcuiType && _.isEqual(result.attrs, attrs)) {7 console.log('Test passed');8} else {9 console.log('Test failed');10}11const { findElementFromElement } = require('appium-xcuitest-driver').commands;12const elementId = 'elementId';13const using = 'xpath';14findElementFromElement(elementId, using, value).then((result) => {15 console.log('Test passed');16}).catch((error) => {17 console.log('Test failed');18});

Full Screen

Using AI Code Generation

copy

Full Screen

1var css = require('css');2var fs = require('fs');3var path = require('path');4var XCUITestDriver = require('appium-xcuitest-driver');5var cssSelector = 'XCUIElementTypeButton[name="Back"]';6var xpath = XCUITestDriver.parseCssRule(cssSelector);7console.log(xpath);

Full Screen

Using AI Code Generation

copy

Full Screen

1var xcuitestDriver = new XCUITestDriver();2var cssRule = xcuitestDriver.parseCssRule("class name", "XCUIElementTypeButton");3commands.parseCssRule = async function (strategy, selector) {4 if (strategy === 'class name') {5 if (selector === 'XCUIElementTypeButton') {6 } else if (selector === 'XCUIElementTypeTextField') {7 }8 }9};10parseCssRule (strategy, selector) {11 if (strategy === 'class name') {12 if (selector === 'XCUIElementTypeButton') {13 } else if (selector === 'XCUIElementTypeTextField') {14 }15 }16};17commands.parseCssRule = async function (strategy, selector) {18 if (strategy === 'class name') {19 if (selector === 'XCUIElementTypeButton') {20 } else if (selector === 'XCUIElementTypeTextField') {21 }22 }23};24parseCssRule (strategy, selector) {25 if (strategy === 'class name') {26 if (selector === 'XCUIElementTypeButton') {27 } else if (selector === 'XCUIElementTypeTextField') {28 }29 }30};31commands.parseCssRule = async function (strategy, selector) {32 if (strategy === 'class name') {33 if (selector === 'XCUIElementTypeButton') {34 } else if (selector === 'XCUIElementTypeTextField') {35 }36 }37};38parseCssRule (strategy, selector) {39 if (strategy === 'class name') {40 if (selector === 'XCUIElementTypeButton

Full Screen

Automation Testing Tutorials

Learn to execute automation testing from scratch with LambdaTest Learning Hub. Right from setting up the prerequisites to run your first automation test, to following best practices and diving deeper into advanced test scenarios. LambdaTest Learning Hubs compile a list of step-by-step guides to help you be proficient with different test automation frameworks i.e. Selenium, Cypress, TestNG etc.

LambdaTest Learning Hubs:

YouTube

You could also refer to video tutorials over LambdaTest YouTube channel to get step by step demonstration from industry experts.

Run Appium Xcuitest Driver automation tests on LambdaTest cloud grid

Perform automation testing on 3000+ real desktop and mobile devices online.

Sign up Free
_

Try LambdaTest Now !!

Get 100 minutes of automation test minutes FREE!!

Next-Gen App & Browser Testing Cloud

Was this article helpful?

Helpful

NotHelpful