Reputation: 65
I am trying to check if a checkbox has been selected and if not check it. No matter what, I can never check it since it never reaches to the click(). Please see code below.
This is the code in the protractor test:
//find item
var useSslInput = $('#useSsl');
if(newDirectory.useSsl == true){
if(!useSslInput.isSelected()){
useSslInput.click();
}
var sslInput = $('#sslCertificate');
sslInput.sendKeys(newDirectory.sslCertificate);
} else {
if(!useSslInput.isSelected()){
useSslInput.click();
}
}
The html is below:
<div class="field">
<label class="field-label" for="useSsl">{{::'directory.page.add.label.useSsl' |i18n}}</label>
<div class="field-input"><input id="useSsl" name="useSsl" type="checkbox" ng-model="addEditDirectory.directory.useSsl" ng-checked="addEditDirectory.directory.useSsl"></div>
</div>
Am I doing something wrong here?
Upvotes: 1
Views: 10634
Reputation: 12108
Read up about using promises: http://www.html5rocks.com/en/tutorials/es6/promises/
In your particular case, you want something like:
var useSslInput = $('#useSsl');
if(newDirectory.useSsl == true) {
useSslInput.isSelected().then(function(selected) {
if (!selected){
useSslInput.click();
}
var sslInput = $('#sslCertificate');
sslInput.sendKeys(newDirectory.sslCertificate);
});
} else {
useSslInput.isSelected().then(function(selected) {
if (!selected) {
useSslInput.click();
}
});
}
Upvotes: 6