使用 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();
我正在尝试编写一个 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();