UNPKG

@redhat-developer/page-objects

Version:

Page Object API implementation for a VS Code editor used by ExTester framework.

85 lines 3.51 kB
"use strict"; /** * Licensed to the Apache Software Foundation (ASF) under one or more * contributor license agreements. See the NOTICE file distributed with * this work for additional information regarding copyright ownership. * The ASF licenses this file to You under the Apache License, Version 2.0 * (the "License", destination); you may not use this file except in compliance with * the License. You may obtain a copy of the License at * * https://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ Object.defineProperty(exports, "__esModule", { value: true }); exports.AbstractElement = void 0; const selenium_webdriver_1 = require("selenium-webdriver"); /** * Default wrapper for webelement */ class AbstractElement extends selenium_webdriver_1.WebElement { static ctlKey = process.platform === 'darwin' ? selenium_webdriver_1.Key.COMMAND : selenium_webdriver_1.Key.CONTROL; static driver; static locators; static versionInfo; enclosingItem; /** * Constructs a new element from a Locator or an existing WebElement * @param base WebDriver compatible Locator for the given element or a reference to an existing WeBelement * @param enclosingItem Locator or a WebElement reference to an element containing the element being constructed * this will be used to narrow down the search for the underlying DOM element */ constructor(base, enclosingItem) { let item = AbstractElement.driver.findElement(AbstractElement.locators.AbstractElement.tag); if (!enclosingItem) { enclosingItem = item; } if (enclosingItem instanceof selenium_webdriver_1.WebElement) { item = enclosingItem; } else { item = AbstractElement.driver.findElement(enclosingItem); } if (base instanceof selenium_webdriver_1.WebElement) { super(AbstractElement.driver, base.getId()); } else { const toFind = item.findElement(base); const id = toFind.getId(); super(AbstractElement.driver, id); } this.enclosingItem = item; } async isEnabled() { return (await super.isEnabled()) && (await AbstractElement.locators.AbstractElement.enabled(this)); } async isSelected() { return (await super.isSelected()) && (await AbstractElement.locators.AbstractElement.selected(this)); } /** * Wait for the element to become visible * @param timeout custom timeout for the wait * @returns thenable self reference */ async wait(timeout = 5000) { await this.getDriver().wait(selenium_webdriver_1.until.elementIsVisible(this), timeout); return this; } /** * Return a reference to the WebElement containing this element */ getEnclosingElement() { return this.enclosingItem; } static init(locators, driver, browser, version) { AbstractElement.locators = locators; AbstractElement.driver = driver; AbstractElement.versionInfo = { version: version, browser: browser }; } } exports.AbstractElement = AbstractElement; //# sourceMappingURL=AbstractElement.js.map