量角器:突然出现错误,元素不可见

时间:2018-06-20 18:47:06

标签: angular protractor automated-tests

我编写了一个测试,以在是okta小部件的弹出窗口中选择一个登录按钮。大约2个小时前,我的测试工作正常,并且单击了按钮。量角器突然间说它不可见。我没有对代码进行任何修改,这让我非常困惑。我花了一段时间尝试使其重新工作,但是即使元素明显可见,每次遇到相同的错误时,我都想这样做。我的测试应该单击按钮,然后将用户重定向到登录页面。由于某种原因,此按钮现在不可见。这是我的模板文件中该按钮的行。

 <button class = 'loginBtn' mat-raised-button color="primary" *ngIf="!isAuthenticated" (click)="oktaAuth.loginRedirect()"> Login </button>

在页面源中,在chrome上,这是按钮的扩展代码:

<button _ngcontent-c5="" class="loginBtn mat-raised-button mat-primary ng-star-inserted" color="primary" mat-raised-button="" ng-reflect-color="primary" style=""><span class="mat-button-wrapper"> Login </span><div class="mat-button-ripple mat-ripple" matripple="" ng-reflect-centered="false" ng-reflect-disabled="false" ng-reflect-trigger="[object HTMLButtonElement]"></div><div class="mat-button-focus-overlay"></div></button>

这是我在对象类中引用按钮的方式:

 getLoginBtn() {
return element(by.className('loginBtn'));

我什至编写了代码来查找弹出窗口,然后单击按钮,但是仍然出现不可见的错误。任何帮助都会很棒。

1 个答案:

答案 0 :(得分:0)

已解决:不知道为什么我的原始代码无法正常工作,但我这样做解决了该问题:

  getLogin() {
return element.all(by.cssContainingText('.mat-button-wrapper', ' Login ')).last();

老实说,我不知道是什么原因导致了我原来的方法停止工作,但至少我找到了解决方案。我有两个相同的小部件,一个在弹出窗口中显示,另一个在侧边栏中显示在我的主页上。我为弹出式登录创建了一个单独的类,这样可以提高效率,但是由于某种原因而无法正常工作。由于其他按钮都起作用,因此我只使用了这两个按钮的类名,并应用了.all和.last(),以便量角器单击最后一个按钮。