我有以下呈现的 HTML
<div class="col-xs-8 no-padding">
<label class="radio-inline gender-label">
<input type="radio" name="gender" id="male-signup" value="MALE" ng-model="signup.gender" required="" class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required">
<label for="male-signup">Male</label>
</label>
<label class="radio-inline gender-label">
<input type="radio" name="gender" id="female-signup" value="FEMALE" ng-model="signup.gender" required="" class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required">
<label for="female-signup">Female</label>
</label>
</div>
因此,要选择男性单选按钮,我执行了以下操作
element(by.id('male-signup')).click();
它抱怨 Element not visible
然后我做了
var EC = protractor.ExpectedConditions;
var gender = element(by.id('male-signup'));
browser.wait(EC.visibilityOf(gender), 5000);
gender.click();
它抱怨 Failed: Wait timed out after 5005ms
代码有什么问题?我只想点击性别男性单选按钮
更新:
根据“恩斯特·茨温利”(Ernst Zwingli) 的以下答案之一,我尝试了以下方法。然而,它仍然抱怨Failed: Wait timed out after 5005ms
var EC = protractor.ExpectedConditions;
var gender = element(by.id('male-signup')).element(by.xpath('//*[@id="top"]/div[2]/div/div/div/form/div[8]/div[2]/label[1]/label'));
browser.wait(EC.visibilityOf(gender), 5000);
gender.click();
由于您可能还可以单击标签来选择单选按钮,因此要有效单击的元素可能是其父元素。
试试这个:
//select your element, then go to its parent-element.
element(by.id('male-signup')).element(by.xpath('..')).click();
或者使用您的等待声明:
var EC = protractor.ExpectedConditions;
//this selects the <label class="radio-inline gender-label"> above "male-signup"
//potentially the parent-element is visible instead of the id-element
var gender = element(by.id('male-signup')).element(by.xpath('..'));
browser.wait(EC.visibilityOf(gender), 5000);
gender.click();
这是您的 HTML 页面作为片段,您可以在其中看到,单击标签也有效。
<html>
<head></head>
<body>
<div class="col-xs-8 no-padding">
<label class="radio-inline gender-label">
<input type="radio" name="gender" id="male-signup" value="MALE" ng-model="signup.gender" required="" class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required">
<label for="male-signup">Male</label>
</label>
<label class="radio-inline gender-label">
<input type="radio" name="gender" id="female-signup" value="FEMALE" ng-model="signup.gender" required="" class="ng-pristine ng-untouched ng-empty ng-invalid ng-invalid-required">
<label for="female-signup">Female</label>
</label>
</div>
</body>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句