AngularJs 量角器:滑出菜单中的元素不可见
AngularJs Protractor: Element in slide out menu not visible
我带着更多量角器问答回来了。因此,我在尝试查找滑出菜单内的元素时遇到了一个问题。
html 的片段:
<div class="ng-scope" ui-view="navmenu">
<nav class="menu slide-menu-left ng-scope">
<md-content class="md-default-theme" style="display: table" ng-click="slideMenuLeft()" tabindex="0">
<button class="md-button md-default-theme" ng-transclude=""
style="width:50%;height:72px;border-right:1px solid #ddd;border-bottom:1px solid #ddd"
ng-click="checkmap()" tabindex="0">
以下是我尝试从该菜单中获取按钮的方法:
element(by.css('Button[ng-click="logoff()"]'));
element(by.xpath('/html/body/section/div[@class="ng-scope"]/nav[@class="menu slide-menu-left ng-scope"]/md-content/button[@ng-click="logoff()"]'));
Protractor 不喜欢并继续告诉我:
Stacktrace:
ElementNotVisibleError: element not visible
(Session info: chrome=40.0.2214.115)
(Driver info: chromedriver=2.14.313457 (3d645c400edf2e2c500566c9aa096063e707c9cf),platform=Windows NT 6.3 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 31 milliseconds
Build info: version: '2.45.0', revision: '5017cb8', time: '2015-02-26 23:59:50'
任何人都可以就我可能做错的地方向我提出建议吗?
您需要先打开菜单,然后才能找到并单击子菜单:
element(by.css('nav.menu > md-content')).click();
element(by.css('nav.menu > md-content > button[ng-click="logoff()"]')).click();
您可能还需要使用 elementToBeClickable
来 等待子菜单变得可点击(需要量角器 1.7 或更高版本):
var EC = protractor.ExpectedConditions;
var logoff = element(by.css('nav.menu > md-content > button[ng-click="logoff()"]'));
browser.wait(EC.elementToBeClickable(logoff), 10000);
logoff.click();
您也可以使用 promise 等待操作完成
element(by.id('menu')).click().then(function(){
element(by.id('link')).click();
});
我带着更多量角器问答回来了。因此,我在尝试查找滑出菜单内的元素时遇到了一个问题。
html 的片段:
<div class="ng-scope" ui-view="navmenu">
<nav class="menu slide-menu-left ng-scope">
<md-content class="md-default-theme" style="display: table" ng-click="slideMenuLeft()" tabindex="0">
<button class="md-button md-default-theme" ng-transclude=""
style="width:50%;height:72px;border-right:1px solid #ddd;border-bottom:1px solid #ddd"
ng-click="checkmap()" tabindex="0">
以下是我尝试从该菜单中获取按钮的方法:
element(by.css('Button[ng-click="logoff()"]'));
element(by.xpath('/html/body/section/div[@class="ng-scope"]/nav[@class="menu slide-menu-left ng-scope"]/md-content/button[@ng-click="logoff()"]'));
Protractor 不喜欢并继续告诉我:
Stacktrace:
ElementNotVisibleError: element not visible
(Session info: chrome=40.0.2214.115)
(Driver info: chromedriver=2.14.313457 (3d645c400edf2e2c500566c9aa096063e707c9cf),platform=Windows NT 6.3 x86_64) (WARNING: The server did not provide any stacktrace information)
Command duration or timeout: 31 milliseconds
Build info: version: '2.45.0', revision: '5017cb8', time: '2015-02-26 23:59:50'
任何人都可以就我可能做错的地方向我提出建议吗?
您需要先打开菜单,然后才能找到并单击子菜单:
element(by.css('nav.menu > md-content')).click();
element(by.css('nav.menu > md-content > button[ng-click="logoff()"]')).click();
您可能还需要使用 elementToBeClickable
var EC = protractor.ExpectedConditions;
var logoff = element(by.css('nav.menu > md-content > button[ng-click="logoff()"]'));
browser.wait(EC.elementToBeClickable(logoff), 10000);
logoff.click();
您也可以使用 promise 等待操作完成
element(by.id('menu')).click().then(function(){
element(by.id('link')).click();
});