2016-11-08 4 views
1

私はウェブサイトのログインとログアウトの機能のための簡単な分度器テストを書いています。ログインテストはうまく実行されているが、ログアウトリンクは、私が最後<a>にアクセスするにはどうすればよいのアイコン分度器でドロップダウンメニューのオプションをクリックするためのテストを書くには?

<div class="dropdownx"> 
    <a href="#link" class="my-account"><i class="fa fa-user"></i></a> 
    <div class="dropdownx-content" style="text-align:center; margin-left:-60px; "> 
    <p><a href="#account">My Account</a></p> 
    <p><a href="#order_history">Order History</a></p> 
    <p><a href="#downloads">Downloads</a></p> 
    <p><a href="#transactions">Transactions</a></p> 
    <p><a href="#wishlist" id="wishlist-total">Wish List (0)</a></p> 
    <p><a href="#logout">Logout</a></p> 
    </div> 
</div> 

にホバリングした後、ドロップダウンメニューに表示されるように私は、ログアウトのためのテストを書く方法を知らない ログアウトオプションの場合はidまたはclassであり、hoverにしか表示されないため、この要素は非表示になります。 私はこのテストをログイン用に書いています。

describe('To test mdpocket login window', function(){ 
it('should be able to login', function() { 
    browser.driver 
    browser.driver.get('login_page_link'); 
    browser.driver.findElement(by.css('#input-email')).sendKeys("[email protected]"); 
    browser.driver.findElement(by.css('#input-password')).sendKeys("some_password_here"); 
    var login = browser.driver.findElement(by.css('#button-login')) 
    login.click(); 
}) 
}); 

ですから、基本的に私の質問はどのように私はid、クラスなしで隠し要素を取得できますか?私は検索しましたが、今のところ解決策は見つかりませんでした。助けてください !

UPDATE: 私は、ログアウトのためにこれを試してみましたが、Process exited with error code 1

var dropDown = browser.driver.findElement(by.css('.dropdownx')); 
browser.actions().mouseMove(dropDown).perform(); 
browser.driver.findElement(By.xpath("//a[text() = 'Logout']")).click(); 

私の解決策このエラーを与えている。このことは、私のために働いた

var dropDown = browser.driver.findElement(by.css('.my-account')) 
browser.actions().mouseMove(dropDown).perform(); 
browser.driver.findElement(By.xpath("//a[text() = 'Logout']")).click(); 

を!

答えて

4

まず、マウスカーソルを移動して要素をドロップダウンし続ける必要があります。したがって、すべてのドロップダウンメニューオプションが表示されます。カーソルをログアウトリンクに移動してをクリックします。

コードスニペット

FYI
var EC=protractor.ExpectedConditions; 
var dropDown=element(by.css(".dropdownx")); 
var logoutLink=element(by.css('a[href="#logout"]')); 

browser.actions().mouseMove(dropDown).perform().then(function(){ 
    browser.wait(EC.visibilityOf(dropDown),8000,'Logout Link is not visible'); 
    browser.actions().mouseMove(logoutLink).click().perform(); 
}); 

:あなたは以下のコードに従うことができます更新はドロップダウンと述べたロケータ上記の場合には、リンクロケータをログアウトこれは役立つかもしれない要素

+0

"まず、マウスカーソルを移動して要素を下に押し続ける必要があります。" このオートマトン私のテストとtically? – Haroon

+0

var dropDown = browser.driver.findElement(by.css( '。my-account')) \t browser.actions()。mouseMove(dropDown).perform(); \t browser.driver.findElement(By.xpath( "// a [text()= 'ログアウト']"))。 このことは私のために働いた – Haroon

2

をfindoutするために失敗しました:

var dropDown = element(by.css(".dropdownx")); 

browser.actions().mouseMove(dropDown).perform().then(function() { 
    element(by.className('dropdownx-content')).all(by.tagName('a')).filter(function (elem, index) { 
     return elem.getText().then(function (val) { 
      return val === 'Logout' 
     }) 
    }).first().click(); 
}); 
関連する問題