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 | 48x 13x 13x 5x 13x 4x 9x | /** * * Return true if the selected DOM-element is displayed. * * <example> :index.html <div id="notDisplayed" style="display: none"></div> <div id="notVisible" style="visibility: hidden"></div> <div id="notInViewport" style="position:absolute; left: 9999999"></div> <div id="zeroOpacity" style="opacity: 0"></div> :isDisplayed.js it('should detect if an element is displayed', () => { let elem = $('#notDisplayed'); let isDisplayed = elem.isDisplayed(); console.log(isDisplayed); // outputs: false elem = $('#notVisible'); isDisplayed = elem.isDisplayed(); console.log(isDisplayed); // outputs: false elem = $('#notExisting'); isDisplayed = elem.isDisplayed(); console.log(isDisplayed); // outputs: false elem = $('#notInViewport'); isDisplayed = elem.isDisplayed(); console.log(isDisplayed); // outputs: true elem = $('#zeroOpacity'); isDisplayed = elem.isDisplayed(); console.log(isDisplayed); // outputs: true }); * </example> * * @alias element.isDisplayed * @return {Boolean} true if element is displayed * @uses protocol/elements, protocol/elementIdDisplayed * @type state * */ import { ELEMENT_KEY } from '../../constants' import { getBrowserObject } from '../../utils' import isElementDisplayedScript from '../../scripts/isElementDisplayed' const noW3CEndpoint = ['microsoftedge', 'safari', 'chrome'] export default async function isDisplayed() { let browser = getBrowserObject(this) /* * This is only necessary as isDisplayed is on the exclusion list for the middleware */ if (!this.elementId) { this.elementId = (await this.parent.$(this.selector)).elementId } /* * if element was still not found it also is not displayed */ if (!this.elementId) { return false } /* * https://www.w3.org/TR/webdriver/#element-displayedness * Certain drivers have decided to remove the endpoint as the spec * no longer dictates it. In those instances, we pass the element through a script * that was provided by Brian Burg of safaridriver. * * 6th of May 2019 APPIUM response (mykola-mokhnach) : * - Appium didn't enable W3C mode for mobile drivers. * - Safari and Chrome work in jsonwp mode and Appium just rewrites W3C requests from upstream to jsonwp if needed */ return browser.isW3C && !browser.isMobile && noW3CEndpoint.includes(browser.capabilities.browserName.toLowerCase()) ? await browser.execute(isElementDisplayedScript, { [ELEMENT_KEY]: this.elementId, // w3c compatible ELEMENT: this.elementId // jsonwp compatible }) : await this.isElementDisplayed(this.elementId) } |