Angular JS Protractor提取数据

时间:2014-02-06 11:35:24

标签: javascript angularjs protractor

使用量角器我想从我的Angular JS应用程序中提取一些特定数据。 我要提取的数据嵌入在div中的id为“jobHolder”的外部div中我有几个嵌入的div,每个div都有一个id“job_i”。我从1到n ......

这是HTML:

<div class="thumbJobs" id="jobHolder" style=
"height: 275px; overflow: hidden;" tabindex="5052">
    <div class="job ng-scope" id="job_1">
        <div class="viewerEye" id="job_1_viewerEye"></div>
        <div class="jobBigPicto transition_2_opa" id="job_1_jobBigPicto">
            <div class="jobsSmallPictos transition_2_opa" id=
            "job_1_jobsSmallPictos">
                <div class="jobDown transition_2_opa" id="job_1_jobDown">
                    <div class="jobTitle ng-binding">
                        TSK(Z87700J)(000)(Z87700JU00)(000)
                    </div>
                    <div class="jobText ng-binding"></div>
                </div>
                <div class="jobHoverInfo" id="job_1_jobHoverInfo"></div>
                <div class="job ng-scope" id="job_2">
                    <div class="job ng-scope" id="job_3">
                        <div class="job ng-scope" id="job_4">
                            <div class="job ng-scope" id="job_5">
                                <div class="job ng-scope" id="job_6">
                                    <div class="job ng-scope" id="job_7">
                                    </div>
                                </div>
                            </div>
                        </div>
                    </div>
                </div>
            </div>
        </div>
    </div>
</div>

我想提取的是每个inernal DIV中的jobTitle。我尝试过中继器,但我无法提取所有数据,因此我尝试使用Id。

我想在id = job_i的div中提取所有数据,其中i从1变为具有相同id的最后一个DIV的最后一个索引?

我使用此代码提取数据,但代码仅显示前6个元素。 可能是同步还是超时问题?

 for (var i=1; i<20;i++)
    {
    var result =   ptor.findElement(by.xpath('html/body/div[2]/div[1]/section[5]/div[4]/div['+i+']/div[4]/div[1]'));

    result.getText().then(function(text)
    {
        console.log(text);
    });

这是控制台输出,它只显示6个元素,而网页显示20个元素:

TSK(Z87700J)(000)(Z87700JU00)(000)
TSK(AGD170JFZZ)(000)
TSK(ZA1112O)(000)(ZA1111OU00)(000)
TSK(ZA1100O)(000)(ZA1100OU00)(000)
TSK(ZA1111O)(000)(ZA1111OU00)(000)
WAR27_STEP16 A TASK FOR CHAR FR
AN TASK WITH SPACE
WAR81_STEP_NETWORK_SESSION_MU
TSK(TTS758J)(000)(TTS758JN00)(000)
.

Finished in 10.851 seconds
1 test, 0 assertions, 0 failures

1 个答案:

答案 0 :(得分:0)

您可能遇到了计时问题,因为默认情况下所有findElement请求本质上都是异步的并返回Promise。您可能最好按照以下方式编写代码:

     for (var i=1; i<20;i++)
        {
    ptor.findElement(by.xpath('html/body/div[2]/div[1]/section[5]/div[4]/div['+i+']/div[4]/div[1]'))
        .then(function(result){
            result.getText().then(function(text)
            {
                console.log(text);
            });
        });

这应该包装每个findElement请求,以便在promise解析后正确处理它们。

您可能会看到的另一件事是使用findElements获取一个数组,然后迭代并转储到控制台。

希望这有帮助。