【发布时间】:2018-02-22 04:48:23
【问题描述】:
这是我的 Angular 2 应用程序的 HTML。我正在 Chrome 中执行我的测试。
<div _ngcontent-c0="" class="header-actions">
<!---->
<clr-dropdown _ngcontent-c0="" class="dropdown" style="position: static;">
<button _ngcontent-c0="" class="nav-text dropdown-toggle"
clrdropdowntrigger="">
<span _ngcontent-c0="">User Name</span>
<!---->
</button>
<!---->
</clr-dropdown>
</div>
我尝试了以下选项,但未能点击用户名
1.1 element(by.css('nav-text dropdown-toggle')).click();
1.2 element(by.css('.nav-text dropdown-toggle')).click();
1.3 element(by.css("//span[. = 'User Name']")).click();
1.4 element(by.xpath("//span[. = 'User Name']")).click();
2. var logUser = $("div.header-actions clr-dropdown.dropdown button span"),
EC = protractor.ExpectedConditions;
browser.wait(EC.visibilityOf(logUser), 5000);
logUser.click();
3. var elementToClick = element(by.css('.btn btn-lg btn-primary btn-block'));
browser.wait(protractor.ExpectedConditions.elementToBeClickable(elementToClick)
,10000).then ( function () {elementToClick.click(); });
感谢任何帮助。
【问题讨论】:
-
使用
element(by.cssContainingText("span","User Name")).click() -
不幸的是,这也不起作用,并且每次登录时用户名都会不断变化在等待带有定位器的元素时 - 定位器:by.cssContainingText("span", "User Name") 失败:1) angularjs 主页待办事项列表登录到 caas 消息:错误:超时 - 在 jasmine.DEFAULT_TIMEOUT_INTERVAL 指定的超时内未调用异步回调。
-
失败:1) angularjs 主页待办事项列表登录到 caas 消息:错误:超时 - 在 jasmine.DEFAULT_TIMEOUT_INTERVAL 指定的超时内未调用异步回调。堆栈:错误:超时 - 在 jasmine.DEFAULT_TIMEOUT_INTERVAL 指定的超时内未调用异步回调。在 ontimeout (timers.js:478:11) 在 tryOnTimeout (timers.js:302:5) 在 Timer.listOnTimeout (timers.js:262:5)
-
消息:失败:等待异步 Angular 任务在 11 秒后完成超时。这可能是因为当前页面不是 Angular 应用程序。更多详情请查看常见问题解答:github.com/angular/protractor/blob/master/docs/…
标签: html button protractor