在 Selenide 中捕获 shouldHave/shouldBe 方法

Catching shouldHave/shouldBe method in Selenide

我正在编写测试,可能无法正确加载所有字段。我正在考虑使用简单的 try/catch,但是当我使用

$("select[formcontrolname=\"idenifier\"]").shouldBe(disabled);

我得到:

Element should be disabled {input[type="text"]}
Element: '<input class="col-md-8 col-sm-12 col-xs-12 with-tooltip ng-untouched ng-pristine ng-invalid" formcontrolname="identifier" placeholder="e.g. "America" type="text"></input>'
Actual value: enabled

这不是标准例外。我怎样才能抓住它?

如果这是一个下拉菜单并且是禁用的,那么它应该在 DOM.

中添加一个属性 'disabled'
<select class='xxxx'>
    <option disabled='disabled'>

如果你有这个,那么你可以很容易地验证被禁用的元素。

如果没有,您可以先检查它是否显示,然后再检查是否被禁用。

$("select[formcontrolname=\"idenifier\"]").shouldBe(Condition.visible).isEnabled();

这应该 return 你是否启用了下拉菜单。

希望这对您有所帮助..

您可以捕获从 Selenide 的任何断言中抛出的 AssertionError。

虽然你可能不应该,通常当你的断言没有被某个超时满足时,你要么有错误要么断言不正确。