2016-06-15 48 views
0

我想考MD-選擇組件和我卡上單擊MD-選項,返回一個錯誤:角材料MD-選擇 - E2E量角器試驗 - 要素不可見

Failed: element not visible 

我試圖按照本文中的說明操作:https://thecattlecrew.net/2015/03/05/automated-ui-tests-for-an-angularjs-material-select-item-with-protractor/。我的測試代碼的樣子:

element(by.model('vm.model')).click(); //ok, the select is opened 
browser.waitForAngular(); // also tried with browser.driver.sleep(5000); 
element(by.css('.md-select-menu-container md-option[value="6"]')).click(); 
browser.waitForAngular(); 

是否有任何人誰曾與MD-選擇端到端測試已經掙扎?

+0

我只是補充說,瀏覽器窗口是全屏幕,並且我想單擊的選項存在並且可見(無需滾動列表)。 (...)。click()。then(()=> {...})。我也嘗試將事物簡化爲最大值,並做一些類似'element(by.tagName('md-option'))。click();'但我仍然得到相同的錯誤 – magneto

回答

2

問題是,我的CSS選擇器返回多個結果,2個結果是準確的。我無法驗證第二個md選項在哪裏。不過,我通過添加md-active類來縮小我的選擇器,現在它可以正常工作。

這裏是我的全碼:

element(by.model('vm.model')).click(); 
browser.waitForAngular(); 
element(by.css('.md-select-menu-container.md-active md-option[value="6"]')).click(); 
browser.waitForAngular(); 
0

剛一說明,如果你來到這裏,想選擇一個不可見的選項。對於我來說,拋出一個異常,而是加入el.isPresent()檢查後由於某種原因成爲可選:

static async mdSelectByModelContainingText(model: string, text: string) { 
    await element(by.model(model)).click(); 
    await browser.waitForAngular(); 

    let el = element(by.cssContainingText('.md-select-menu-container.md-active md-option > div.md-text', text)); 
    if (!(await el.isPresent())) { 
     throw Error('Not clickable'); 
    } 
    await el.click(); 
    await browser.waitForAngular(); 
} 
0

與CSS選擇器不能找到MD-選項的問題。我認爲這將有助於

element(by.model('vm.model')).click(); 
browser.waitForAngular(); 
element(by.css('.md-select-menu-container.md-active md-select-menu>* md-option[value='6'].md-checkbox-enabled]')).click(); 
browser.waitForAngular();