定位器组合

时间:2017-12-21 07:08:53

标签: protractor

我正在研究量角器来测试AngularJs应用程序。在这里,我遇到了一个场景,我想为不同的用户点击图片。但是对于所有(例如10个)用户来说,图像的id是相同的。所以我发现了另外一个元素,它是分配给每个用户的唯一号码。 2个不同用户的代码是:

USER1:

img id="searchPatientImgAdmittedM" class="img-circle picwidth" ng-click="getPatientVitalLabPharmacy(patient.patientId._id)" onclick="ShowHide(this)" src="icons/male.png" alt="" role="button" tabindex="0"

span class="clearfloat ng-binding">12339/span

USER2:

img id="searchPatientImgAdmittedM" class="img-circle picwidth" ng-click="getPatientVitalLabPharmacy(patient.patientId._id)" onclick="ShowHide(this)" src="icons/male.png" alt="" role="button" tabindex="0"

span class="clearfloat ng-binding">8841/span

编辑:

完整的HTML代码

<div class="col-md-10 col-sm-9 col-xs-9 skin-font-color paddingTop7">
    <span class="skin-font-color">
    <span class="name clearfloat ng-binding">KRISHA</span>
    <span class="clearfloat ng-binding">12348</span>
    <img id="searchPatientImgAdmittedF" class="img-circle picwidth" ng-click="getPatientVitalLabPharmacy(patient.patientId._id)" onclick="ShowHide(this)" src="icons/femaleImages.jpg" alt="" role="button" tabindex="0">
</div>

我试着这样做:

element(by.id('searchPatientImgAdmittedF')).all(by.tagName('‌​12348')).click();
// or 
element(by.id('searchPatientImgAdmittedF')).element(by.tagNa‌​me('12348')).click()‌​;

如何组合定位器以点击此用户。只有图像部分可以点击。

2 个答案:

答案 0 :(得分:0)

感谢你的四个补充。

现在你正试图点击姐妹元素。有几种方法可以做到这一点。

我通常使用的是:

element(by.cssContainingText('span.clearfloat','12348')).element(by.xpath('..')).$('#searchPatientImgAdmittedF').click();
//equal to
element(by.cssContainingText('span.clearfloat','12348')).element(by.xpath('..')).element(by.id('searchPatientImgAdmittedF')).click();

首先评估具有唯一编号的可识别标签,然后爬到其父元素,然后从那里获取带有ID的img元素。

另一种选择是使用isElementPresent()来评估子元素的存在。但是,代码(从我的角度来看)更复杂,我没有看到,cssContainingText()如何在那里使用,所以我不试图在这里做。

答案 1 :(得分:0)

感谢您快速帮助解决我的问题。我想在此添加,我找到了问题的答案,现在我可以从许多用户列表中单击我想要的特定用户。我正在使用的代码是:

element(by.cssContainingText('span.clearfloat','12339'))
.element(by.xpath('/html/body/div[3]/div[1]/div[17]/div/div/table[4]/tbody/tr[3]/td[1]/div[1]/img'))
.click();

这是首先找到子元素,然后是父元素。所有用户的id都是相同的,所以它没有使用它,所以我只使用了xpath和唯一的数字。

再次感谢您的帮助。