我使用VS Code编写TypeScript,最终将其编译为量角器并执行脚本。
VSCode似乎无法自动完成element.isPresent()
或element.isElementPresent
,这使我发疯。
下面是我的代码。
helper.ts
import { browser, by, ElementArrayFinder, WebElement, ElementFinder } from 'protractor';
async isElementPresent(element: WebElement): Promise<boolean> {
expect(await element.isElementPresent().toBe(true));
}
我想通过将expandAllLink作为参数传递给helper函数来检查是否存在expandAllLink。
spec1.ts
expandAllLink: WebElement = element(by.xpath("//span[contains(text(),'Expand All')]"));
答案 0 :(得分:2)
您还可以尝试以下操作:
let el: ElementFinder = $('cssSelector');
expect(el.isPresent()).toBeTruthy();
因为isPresent()
返回Promise<boolean>
答案 1 :(得分:1)
您的代码中发现了两个问题。
1)isElementPresent是browser
对象的功能,但element
。
2)代码中的expect().toBe()
和一对()
不匹配的
import { browser, by, ElementArrayFinder, WebElement, ElementFinder } from 'protractor';
async isElementPresent(ele: WebElement): Promise<boolean> {
// below is your code with wrong pair of ()
expect(await element.isElementPresent().toBe(true));
// expect().toBe() should return Pormise<null>
let present = await browser.isElementPresent(ele);
expect(present).toBe(true);
return present;
// if this function is for getting the present state of elment
// recommend move expect out of this function.
// if this function is for validating the present state,
// recommend make function return value to void.
}