【问题标题】:Protractor can't catch mat-dialog-container量角器无法捕获 mat-dialog-container
【发布时间】:2018-06-11 14:54:48
【问题描述】:

我的 Angular 5 应用程序的量角器测试工作正常,直到它需要捕获带有输入字段的弹出窗口,弹出元素是

<mat-dialog-container class="mat-dialog-container ng-tns-c26-5 ng-trigger ng-trigger-slideDialog ng-star-inserted">

我试过浏览器等待,浏览器休眠,我的代码目前是:

await element(by.id('mat-dialog-container')).to.eventually.equal(true);
browser.waitForAngular();
browser.sleep(60 * 1000); 
await element(by.id('mat-input-1')).sendKeys('A value');
await element(by.id('mat-input-2')).sendKeys('A value');

在捕捉 mat-dialog 弹出窗口时注意捕捉?

【问题讨论】:

    标签: angular protractor e2e-testing


    【解决方案1】:

    元素的 id 不是它的标签名。扩展您的 HTML 并添加一个 ID。然后再试一次。

    <mat-dialog-container id="mat-dialog-container" class="mat-dialog-container ng-tns-c26-5 ng-trigger ng-trigger-slideDialog ng-star-inserted">
    

    你的垫子输入也一样

    <mat-input id="mat-input-1"></mat-input>
    <mat-input id="mat-input-2"></mat-input>
    

    【讨论】:

    • 谢谢!因此,Angular 标记名称根本无法捕捉,像 element(by.tagName('mat-dialog-container')) 这样的东西不适合工作吗?
    • 其实by.tagName()也是存在的。我以为你只想使用by.id()。 :) 请看一下这个链接。 protractortest.org/#/api?view=webdriver.By.tagName
    • PS:如果这有帮助,如果你能将我的答案标记为解决方案,那就太好了。
    • by.tagName 是我尝试过的,但没有用,还有什么想法吗?
    • 很遗憾没有。如果 by.tagName() 失败,by.id() 是最安全的方法。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-12-20
    • 1970-01-01
    • 2020-04-09
    • 2018-07-19
    • 1970-01-01
    • 2019-02-20
    • 1970-01-01
    相关资源
    最近更新 更多