Skip to content
This repository was archived by the owner on Jul 28, 2025. It is now read-only.

Commit c56750d

Browse files
committed
add elementExists and export more function
1 parent 03fade3 commit c56750d

File tree

2 files changed

+15
-4
lines changed

2 files changed

+15
-4
lines changed

src/index.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,4 +6,4 @@
66
export { By2 } from './by2';
77
export { IAppiumDriver, createAppiumWebDriver } from './appiumdriver'
88
export { windowsNativeAppCapabilities } from './appiumdriver.windows'
9-
export { IPageObject, PageObject } from './pageobject'
9+
export { IPageObject, PageObject, gotoPage, clickAndGotoPage } from './pageobject'

src/pageobject.ts

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,6 +7,7 @@ import { WebDriver, WebElementCondition, By } from "selenium-webdriver";
77
import { IAppiumDriver } from './appiumdriver';
88

99
export interface IPageObject {
10+
elementExists(by: By, timeout?: number): Promise<boolean>;
1011
clickAndGotoPage<T extends IPageObject>(type: (new (...args: any[]) => T), by: By, timeout?: number): Promise<T>;
1112
gotoPage<T extends IPageObject>(type: (new (...args: any[]) => T), timeout?: number): Promise<T>;
1213
isReadyConditions(): WebElementCondition[];
@@ -17,14 +18,14 @@ function getInstance<T>(type: (new (...args: any[]) => T), ...args: any[]): T {
1718
return new type(...args);
1819
};
1920

20-
function gotoPage<T extends IPageObject>(type: (new (...args: any[]) => T), driver: IAppiumDriver, timeout?: number): Promise<T> {
21+
export function gotoPage<T extends IPageObject>(type: (new (...args: any[]) => T), driver: IAppiumDriver, timeout?: number): Promise<T> {
2122
const page = getInstance(type, driver);
2223
return new Promise<T>((resolve) => {
2324
page.waitUntilReady(timeout).then(() => resolve(page))
2425
});
2526
}
2627

27-
function clickAndGotoPage<T extends IPageObject>(type: (new (...args: any[]) => T), driver: IAppiumDriver, by: By, timeout?: number): Promise<T> {
28+
export function clickAndGotoPage<T extends IPageObject>(type: (new (...args: any[]) => T), driver: IAppiumDriver, by: By, timeout?: number): Promise<T> {
2829
return new Promise<T>((resolve) => {
2930
driver.get(by, timeout)
3031
.then(el => { return el.click(); })
@@ -55,6 +56,14 @@ export class PageObject implements IPageObject {
5556
this.appiumDriver = dirver;
5657
}
5758

59+
elementExists(by: By, timeout?: number): Promise<boolean> {
60+
return new Promise<boolean>(resolve =>
61+
this.appiumDriver.seleniumDriver().findElement(by)
62+
.then(() => resolve(true))
63+
.catch(() => resolve(false))
64+
);
65+
}
66+
5867
isReadyConditions(): WebElementCondition[] {
5968
throw new Error("Not implemented");
6069
}
@@ -78,7 +87,9 @@ export class PageObject implements IPageObject {
7887

7988
private static async waitForConditions(driver: WebDriver, conditions: WebElementCondition[], timeout?: number) {
8089
for (var i = 0; i < conditions.length; i++) {
81-
await driver.wait(conditions[i], timeout);
90+
if (conditions[i]) {
91+
await driver.wait(conditions[i], timeout);
92+
}
8293
}
8394
}
8495
}

0 commit comments

Comments
 (0)