2017-08-18 10 views
1

タグのタイトル値をすべて抽出するにはどうすればよいですか?以下はxml構造体です。 ulTopMenuはホバーのドロップダウンです。私は分度器を使用しています。続きどのようにして、すべての 'a'タグを属性 'title'で抽出するのですか?

<ul id="ulTopMenu"> 
<li> 
<li> 
<li> 
    <ul class="submenu"> 
     <li> 
      <a href="" title = "test2"></a></li> 
     <li> 
      <a href ="" title = "test1" ></a></li> 
    </ul> 
</li> 
</ul> 

は私が

var menus = element.all(by.css('#ulTopMenu > li')); 
    var submenu = element.all(by.css('#ulTopMenu > li .submenu li')).all(by.tagName('a')); 
    browser.actions().mouseMove(menus.get(3)).perform().then(function() { 
     submenu.filter(function (elem, index) { 
      return elem.getAttribute('title').then(function (val) { 
       return val === 'test1' 
      }) 
     }).first().click(); 

を試してみました何それはいつも私に実際にコードを実行し、何が起こっているかを見ることなくデバッグすることは困難である目に見える

+0

テキストを抽出するか、これらのリンクをクリックする必要がありますか?また、mouseMoveをサブメニューに連結し、リンクしてクリックする必要があります。一気にこのようなものではありません –

+0

Selenium(Java)に基づいた回答/解決策はありますか? – DebanjanB

+0

@DebanjanBはいいいえ – Monika

答えて

0

要素はないというエラーが返されますが、教育上の推測です。最初にドロップダウンを開くべきではありません。

var dropdown = element(by.id("ulTopMenu")); 
var submenu = dropdown.$("ul.submenu"); 
var desiredMenuItem = submenu.$('li > a[title=test1]'); 

browser.actions() 
    .mouseMove(dropdown) 
    .mouseMove(submenu) 
    .click(desiredMenuItem) 
    .perform() 

どのように私はCSSセレクターでタイトルによってリンクを探しているのか注意してください。

また、マウスを動かすかクリックすることで、アクションを適用する際の前提条件がわかります - ドロップダウンの開き方を変更する必要があるかどうかを確認してください。

同様のケースでは、custom sleep() browser actionを使用していた操作の間に遅延を追加する必要があります。


あなただけの属性titleでリンクテキストを抽出するために必要がある場合:

$$("#ulTopMenu ul.subMenu li > a[title]").getText().then(console.log); 
0

エラーが絶対に正しいです。それがドロップダウンの場合、どのように通常サブメニューが表示されますか?はい、最初にクリックする必要があります(ドロップダウン)。サブメニューが表示された後で、サブメニュー項目をクリックすることができます。

+0

ドロップダウンをマウスオーバーするとサブメニューが表示されます – Monika

関連する問題