@redhat-developer/page-objects
Version:
Page Object API implementation for a VS Code editor used by ExTester framework.
85 lines • 3.51 kB
JavaScript
/**
* 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
;