Press n or j to go to the next uncovered block, b, p or k for the previous block.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 | 1x 1x 1x 3x 85x 85x 36x 36x 1x 1x 1x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 3x 6x 3x 6x 3x 1x | "use strict"; const _ = require("lodash"); const findStrategy = require("webdriverio/build/lib/helpers/findElementStrategy"); module.exports = { clearElementText: value => { Eif (!_.isArray(value)) return value.trim(); return value.map(v => v.trim()); }, getElementCommand: selector => { Iif (findStrategy(selector).using === "xpath") { return `${xpathFunc(selector)}[0]`; } else { return `document.querySelector("${selector}")`; } }, getElementsCommand: selector => { Iif (findStrategy(selector).using === "xpath") { return xpathFunc(selector); } else { return `document.querySelectorAll("${selector}")`; } }, }; const xpathFunc = selector => { return ` \ ((() => { var xpathObj = document.evaluate("${selector}", \ document, null, XPathResult.ORDERED_NODE_SNAPSHOT_TYPE, null); \ var result = []; \ var count = xpathObj.snapshotLength; \ for (var i = 0; i < count; i++) { \ result.push(xpathObj.snapshotItem(i)); \ } \ return result; \ })())`; }; class OrderedCollection { constructor() { this.objs = {}; this.keys = []; } pop(key) { Iif (key) { if (this.keys.includes(key)) { this.keys.splice(this.keys.indexOf(key), 1); return this.objs[key]; } else { throw Error(`Key "${key}" isn't added yet`); } } else { key = this.keys.pop(); return this.objs[key]; } } push(obj, key) { Iif (!key) { for (const [k, o] of Object.entries(this.objs)) { if (o === obj) { this.keys.push(k); return; } } throw Error("Pushed object isn't assigned with any key"); } Iif (key && this.keys.includes(key)) { throw Error(`Key "${key}" is used already`); } else { this.keys.push(key); this.objs[key] = obj; } } get(key) { Eif (key) { Iif (this.keys.includes(key)) { return this.objs[key]; } else { return null; } } else { if (this.keys.length) { return this.objs[this.keys[0]]; } else { return null; } } } getKey(obj) { for (const [k, o] of Object.entries(this.objs)) { if (obj === o && this.keys.includes(k)) { return k; } } return null; } top() { if (!this.keys.length) return null; return this.objs[this.keys[this.keys.length - 1]]; } all() { const result = {}; for (const key of this.keys) { result[key] = this.objs[key]; } return result; } }; module.exports.OrderedCollection = OrderedCollection; |