2016-12-28 10 views
0

特定のメニュー項目を起動する際に問題があります。 メニューDOMは、以下の<ul>の項目が含まれています分度器を使用してナビメニュー項目を選択する

アップロード レポート ダウンロード 管理

ここではメニュー構造のDOMのサンプルです:

<!DOCTYPE html> 
 
<html xmlns="http://www.w3.org/1999/xhtml"> 
 
<head> 
 
<title></title> 
 
</head> 
 
<body> 
 

 
<div id="TheMenu"> 
 
<ul class="rmRootGroup rmHorizontal"> 
 
<li class="rmItem rmSelected" style="z-index: 0;"> 
 
<span class="rmLink rmRootLink rmExpand rmExpandDown" tabindex="0">Bal Sheet)</span><div class="rmSlide" style="display: none; visibility: visible; width: 141px; height: 126px; left: 0px; top: 28px; z-index: 9; overflow: hidden;"> 
 
    <ul class="rmVertical rmGroup rmLevel1" style="top: -126px; left: 0px; display: block; visibility: visible; transition: none;"> 
 
     <li class="rmItem rmFirst" style="z-index: 0;"> 
 
      <span class="rmLink rmExpand rmExpandRight" " style="width: 69px;"><img alt="" src="images/foldericon.gif" class="rmLeftImage"><span class="rmText">Uploads</span></span><div class="rmSlide" style="display: none; visibility: visible; width: 144px; height: 126px; left: 135px; top: 0px; z-index: 5; overflow: hidden;"> 
 
       <ul class="rmVertical rmGroup rmLevel2"> 
 
        <li class="rmItem rmFirst"><span class="rmLink" tabindex="0" ><img alt="" src="images/document.gif" class="rmLeftImage"><span class="rmText">Upload List</span></span></li> 
 
        <li class="rmItem "> 
 
         <span class="rmLink rmExpand rmExpandRight" tabindex="0" ><img alt="" src="images/foldericon.gif" class="rmLeftImage"><span class="rmText">Adj123</span></span><div class="rmSlide"> 
 
          <ul class="rmVertical rmGroup rmLevel3"> 
 
           <li class="rmItem rmFirst"><span class="rmLink" tabindex="0"><img alt="" src="images/document.gif" class="rmLeftImage"><span class="rmText">BLAH Adjustment This</span></span></li> 
 
           <li class="rmItem rmLast"><span class="rmLink" tabindex="0"><img alt="" src="images/document.gif" class="rmLeftImage"><span class="rmText">BLAH2 Adjustment That</span></span></li> 
 
          </ul> 
 
         </div> 
 
        </li> 
 
        <li class="rmItem "> 
 
         <span class="rmLink rmExpand rmExpandRight" tabindex="0" style="width: 72px;"><img alt="" src="images/foldericon.gif" class="rmLeftImage"><span class="rmText">Targets</span></span><div class="rmSlide"> 
 
          <ul class="rmVertical rmGroup rmLevel3"> 
 
           <li class="rmItem rmFirst"><span class="rmLink" tabindex="0"><img alt="" src="images/document.gif" class="rmLeftImage"><span class="rmText">Target1 BLAH1</span></span></li> 
 
           <li class="rmItem rmLast"><span class="rmLink" tabindex="0"><img alt="" src="images/document.gif" class="rmLeftImage"><span class="rmText">Target2 BLAH2</span></span></li> 
 
          </ul> 
 
         </div> 
 
        </li> 
 
        <li class="rmItem rmLast"> 
 
         <span class="rmLink rmExpand rmExpandRight" tabindex="0" style="width: 72px;"><img alt="" src="images/foldericon.gif" class="rmLeftImage"><span class="rmText">Actuals</span></span><div class="rmSlide"> 
 
          <ul class="rmVertical rmGroup rmLevel3"> 
 
           <li class="rmItem rmFirst"><span class="rmLink" tabindex="0"><img alt="" src="images/document.gif" class="rmLeftImage"><span class="rmText">Actual This</span></span></li> 
 
           <li class="rmItem rmLast"><span class="rmLink" tabindex="0"><img alt="" src="images/document.gif" class="rmLeftImage"><span class="rmText">Actual That</span></span></li> 
 
          </ul> 
 
         </div> 
 
        </li> 
 
       </ul> 
 
      </div> 
 
     </li> 
 
     <li class="rmItem "> 
 
      <span class="rmLink rmExpand rmExpandRight" tabindex="0" style="width: 69px;"><img alt="" src="images/foldericon.gif" class="rmLeftImage"><span class="rmText">Reports</span></span><div class="rmSlide"> 
 
       <ul class="rmVertical rmGroup rmLevel2"> 
 
        <li class="rmItem rmFirst"><span class="rmLink" tabindex="0"><img alt="" src="images/document.gif" class="rmLeftImage"><span class="rmText">REPT 1</span></span></li> 
 
        <li class="rmItem "><span class="rmLink" tabindex="0"><img alt="" src="images/document.gif" class="rmLeftImage"><span class="rmText">REPT 2</span></span></li> 
 
        <li class="rmItem rmLast"><span class="rmLink" tabindex="0"><img alt="" src="images/document.gif" class="rmLeftImage"><span class="rmText">REPT 2</span></span></li> 
 
       </ul> 
 
      </div> 
 
     </li> 
 
     <li class="rmItem "> 
 
      <span class="rmLink rmExpand rmExpandRight" tabindex="0" style="width: 69px;"><img alt="" src="images/foldericon.gif" class="rmLeftImage"><span class="rmText">Administration</span></span><div class="rmSlide"> 
 
       <ul class="rmVertical rmGroup rmLevel2"> 
 
        <li class="rmItem rmFirst"><span class="rmLink" tabindex="0"><img alt="" src="images/document.gif" class="rmLeftImage"><span class="rmText">Sub123 List Admin</span></span></li> 
 
        <li class="rmItem "><span class="rmLink" tabindex="0"><img alt="" src="images/document.gif" class="rmLeftImage"><span class="rmText">THIS MENU</span></span></li> 
 
        <li class="rmItem rmLast"><span class="rmLink" tabindex="0"><img alt="" src="images/document.gif" class="rmLeftImage"><span class="rmText">THAT MENU</span></span></li> 
 
       </ul> 
 
      </div> 
 
     </li> 
 
     <li class="rmItem rmLast"> 
 
      <span class="rmLink rmExpand rmExpandRight" tabindex="0" style="width: 69px;"><img alt="" src="images/foldericon.gif" class="rmLeftImage"><span class="rmText">Downloads</span></span><div class="rmSlide"> 
 
       <ul class="rmVertical rmGroup rmLevel2"> 
 
        <li class="rmItem rmFirst"><span class="rmLink" tabindex="0"><img alt="" src="images/document.gif" class="rmLeftImage"><span class="rmText">FIRST DOWNLOAD THING</span></span></li> 
 
        <li class="rmItem rmLast"><span class="rmLink" tabindex="0"><img alt="" src="images/document.gif" class="rmLeftImage"><span class="rmText">SECOND DOWNLOAD THING</span></span></li> 
 
       </ul> 
 
      </div> 
 
     </li> 
 
    </ul> 
 
</div> 
 
</li> 
 
</ul> 
 
</div> 
 

 
</body> 
 
</html>

そして、私の下の分度器のスクリプト。 ..

FYI:私の最初のelem.click()は正常に機能し、.Then()セクションに入ります。ドロップダウンメニューが開きます。

'.rmItem .rmFirst'を使用して[アップロード]サブメニューを開くことができますが、「レポート」メニューを開くにはどうすればよいですか?どのセレクターを使うべきですか? 'ul li:nth-child(2)'は、もう一度トップメニューバーに戻ってくる兄弟にしか行きません。

this.launchUploadsMenu = function() { 
 
    var sel = '#RadMenu1 > ul > li:nth-child(3)'; 
 
    var elem = element(by.css(sel)); 
 

 
    elem.click().then(function() { 
 
    //var elem2 = element.all(by.cssContainingText('.rmLink', 'Uploads')).first(); \t // THIS STILL NOT WORKING 
 
    
 
    var elem2 = element.all(by.css('.rmItem .rmFirst')); // 
 
    elem2.click(); 
 
    }); 
 
}

ヘルプが理解されます。

に関して、 ボブ

答えて

0

私たちは、この環境でDOMを横断する非常に多くの道路ブロックに遭遇したため、browser.actions()と 'cssByText()'の組み合わせを使用することにしました。

これは理想的ではありませんが、機能します。

たとえば、必要な角度のページに移動するために必要なメニューのクリックを達成します(fyi:NavのメニューはAngularアプリケーションではなく、Angularアプリがiframe要素内にロードされる最後のランディングページのみです)。 )。

var sel = '#RadMenu1 > ul > li:nth-child(3)'; // top-level menu  
 

 
var elem = element(by.css(sel)); 
 

 
elem.click().then(function() {  
 

 
    var elem2 = element(by.css(sel)); 
 
    browser.sleep(2000);   
 

 
    // OPENS SUBMENUS 
 
    browser.actions() 
 
\t .mouseMove(elem2, { x: 25, y: 50 }) // an offset relative to the top-left corner of elem2 
 
\t .click() 
 
\t .perform() 
 
\t  .then(function() { 
 
\t \t browser.sleep(1000); 
 
\t \t browser.actions() 
 
\t \t  .mouseMove({ x: 150, y: 20 }) // opens next menu option 
 
\t \t  .click() 
 
\t \t  .perform() 
 
\t \t \t .then(function() { 
 
\t \t \t  var elem = element(by.cssContainingText('.rmText', 'Menu Item To Click')); \t \t 
 
      \t \t  elem.click(); 
 
\t \t \t }); 
 
\t  }); 
 
    
 

 
}); 
 
}

1

あなたは配列の最初の要素を取得するために、最初の()メソッドを使用します。しかし、element()は単一の要素を返します。element.all()を使用してElementArrayFinderを返し、first()を適用する必要があります。

cssContaingTextを使用する代わりに、メニューにレベルの構造を作成して、各レベルの内側を歩いていくことをお勧めします。

なぜ、あなたはwaitForAngularを決めたのですか?分派器はデフォルトで待っていますが、私はなぜあなたがその場合にbrowser.sleepを使うのか理解していません。ほとんどの事はあなたが誓ってから約束して約束することができます。

クリックする要素を正確に指定できますか?

EDIT:

また、そこrmLinkクラスでそのような要素がありませんし、テキストはこれを調整含む、私はあなたがrmTextを探すべきだと思います。

+0

私はHTMLで構造を変えることについて話が、あなたの分度器コード/ Pageオブジェクトに同等の作成についてはいませんでした。 –

+0

var levels = element.all(by.css( '。rmLevel1> .rmItem')); var levelOne = levels.get(0); levelOne.element(by.css( '。rmExpand> .rmText')。click()//それはになります。

+0

私の改訂されたポストをご覧ください –

関連する問題