使用量角器我想从我的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
答案 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获取一个数组,然后迭代并转储到控制台。
希望这有帮助。