使用 XPath 作为定位器时,元素未位于 Angular 应用程序中

Element not being located in Angular app when using XPath as Locator

我正在尝试编写一个 Protractor 测试,它使用 XPath 来点击我的 Angular 应用程序中的 <a> 标签。

以下是我目前拥有的:

it('should click the Calculators menu button', () => {
    var listItem2 = element(by.xpath('/html/body/app-root/app-shell/app-menu/div[2]/ul/li[3]'));
    listItem2.click().then(() => {
        browser.sleep(10000);
    });
});

当我运行测试时,我得到这个错误信息:

Failed: No element found using locator: By(xpath, /html/body/app-root/app-shell/app-menu/nav/div[2]/ul/li[3])

当我检查 <a> 标记并单击 Copy full XPath 时,上面的 XPath 就是我得到的值。

我感觉问题出在 frames 附近。例如,当我输入我的登录凭据并单击“登录”时,我被带到另一个 URL.

谁能告诉我为什么这个 XPath 没有被识别。

这是控制台中的 HTML:

您错过了一个 nav 标签:

 /html/body/app-root/app-shell/app-menu/nav/div[2]/ul/li[3]

但最好这样做:

//app-root/app-shell/app-menu/nav/div/ul/li[3]/a

尝试在点击前添加一个expected condition。像 :

var elm = element(by.xpath('//ul[@class="nav navbar-nav pull-right navigation"]/li[3]/a'));
var EC = protractor.ExpectedConditions;
browser.wait(EC.elementToBeClickable(elm), 5000);
elm.click();