У меня есть кликабельный переключатель, чтобы включить или выключить его. Я использую Java Selenium для проверки состояния (вкл / выкл), затем щелкните по нему, а затем проверьте еще раз статус.
Основываясь на обсуждении в здесь и здесь , я проверяю статус с помощью isSelected()
, но, похоже, он не работает должным образом.
Это часть HTML кодов.
<div formly-field="" ng-repeat="field in fields " ng-show="!field.hide" class="formly-field ng-scope ng-isolate-scope txtToggle topToggle formly-field-toggleSwitch" options="field" model="field.model || model" original-model="model" fields="fields" form="theFormlyForm"
form-id="formly_35" form-state="options.formState" form-options="options" index="$index">
<div class="form-group ng-scope" ng-class="{'has-error': showError}">
<div class="col-xs-12 clearfix toggleRow">
<div class="toggleWrapper switch-on" data-ng-class="{'switch-off': !model[options.key], 'switch-on': model[options.key]}">
<div role="radio" class="toggle-switch ng-isolate-scope ng-valid" ng-class="{ 'disabled': disabled }" ng-model="model[options.key]" id="formly_2_toggleSwitch_AllowContactSMS_0" name="formly_2_toggleSwitch_AllowContactSMS_0" formly-custom-validation=""
ng-click="options.templateOptions['onClick'](model[options.key], options, this, $event)" aria-describedby="formly_2_toggleSwitch_AllowContactSMS_0_description">
<div class="toggle-switch-animate switch-on" ng-class="{'switch-off': !model, 'switch-on': model}"><span class="switch-left ng-binding" ng-bind="onLabel">On</span><span class="knob ng-binding" ng-bind="knobLabel"> </span><span class="switch-right ng-binding" ng-bind="offLabel">Off</span></div>
</div>
</div>
<div class="switchLabel group" ng-class="to.subLabel ? 'group' : 'single'">
<span class="switchTitle ng-binding">Toggle</span>
<!-- ngIf: to.subLabel --><span ng-if="to.subLabel" class="switchSubTitle ng-binding ng-scope">alerts</span>
<!-- end ngIf: to.subLabel -->
</div>
</div>
<!-- ngIf: to.description -->
</div>
</div>
Вот как Selenium проверяет это
WebElement toggle = driver.findElement(By.xpath("//*[@name='formly_35']/child::div[1]//*[contains(@class,'toggle-switch-animate')]"));
boolean onOff = toggle.isSelected();
if (onOff.isSelected()) {
log.debug("IS ON");
} else {
log.debug("IS OFF");
}
toggle.click();
if (onOff.isSelected()) {
log.debug("IS ON");
} else {
log.debug("IS OFF");
}
Я вижу в браузере, что нажат тумблер, и меняю статус с вкл на выкл или с выкл на вкл, но Selenium всегда говорит IS OFF
.
Можно ли в этом случае использовать isSelected
для проверки, включен или выключен тумблер? Если нет, что может быть обходным решением? Спасибо.