簡體   English   中英

量角器-根據條件識別嵌套下拉元素時超時

[英]Protractor- Timeout while Identifying a nested dropdown element based on a condition

我試圖在我的應用程序中識別和選擇一個重嵌套的下拉列表,它具有以下結構(不准確):

<tr>..</tr> 
<tr>
    <td>...</td>
    <td>
        <grid-field field-name="abc">
            <span>
                <span>
                    <span>
                        <select>
                            <option value="xyz">Some option</option>
                        </select>
                    </span>
                </span>         
            </span>
        </grid-field>
    </td>
    <td>
        <grid-field field-name="environment">
            <span>
                <span>
                    <span>
                        <select>
                            <option value="xyz">Some option</option>    /// Required Dropdown
                        </select>
                    </span>
                </span>         
            </span>
        </grid-field>
    </td>
    <td>
        <grid-field field-name="adasd">
            <span>
                <span>
                    <span>
                        <select>
                            <option value="xyz">Some option</option>
                        </select>
                    </span>
                </span>         
            </span>
        </grid-field>   
    </td>
</tr>
<tr>..</tr>

我編寫了以下幫助函數來選擇下拉菜單,但出現超時錯誤。

this.selectValueFromDropDown = function(columnName,dropDownData){
    this.getDropDown(columnName).$("[value='".concat(dropDownData).concat("']")).click();
};

this.getDropDown = function(columnName){
    return element.all(by.tagName('tr')).filter(function(row){
        return row.all(by.tagName('grid-field')).each(function(gridField){
            gridField.getAttribute('field-name').then(function(attribute){
                return attribute === columnName;
            });
        });
    }).first().element(by.tagName('select'));
};


// Spec
gridObject.selectValueFromDropDown('environment','xyz');

錯誤信息

> Message:
>     Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.   Stack:
>     Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.
>         at [object Object]._onTimeout (C:\Users\taaupsa1\AppData\Roaming\npm\node_modules\protractor\node_modules\jasmine-core\lib\jasmine-core\jasmine.js:1812:23)

誰能告訴我我做錯了什么? 謝謝

明白了,這是一個理論。 您錯過了each()調用的return ,使其“永遠”執行並超過了默認的 jasmine 規范超時:

this.getDropDown = function(columnName){
    return element.all(by.tagName('tr')).filter(function(row){
        return row.all(by.tagName('plm-grid-field')).each(function(gridField){
            // v HERE
            return gridField.getAttribute('field-name').then(function(attribute){
                return attribute === columnName;
            });
        });
    }).first().element(by.tagName('select'));
};

而且,我還認為您打算使用filter()而不是each() ..

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM