Java 硒化物中的捕获shouldHave/shouldBe方法

Java 硒化物中的捕获shouldHave/shouldBe方法,java,selenium,selenide,Java,Selenium,Selenide,我正在编写一个测试,可能无法正确加载所有字段。我正在考虑使用简单的try/catch,但是当我使用 $(“选择[formcontrolname=\'idenifier\'”)。应为(禁用) 我得到: 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-inval

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

$(“选择[formcontrolname=\'idenifier\'”)。应为(禁用)

我得到:

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
元素应被禁用{input[type=“text”]}

元素:'如果这是一个下拉列表且已禁用,那么它应该在DOM中添加一个属性'disabled'

<select class='xxxx'>
    <option disabled='disabled'>
如果下拉列表已启用或未启用,则应返回您


希望这有帮助。

您可以捕获从Selenide的任何断言中抛出的断言错误


但是,您可能不应该这样做,通常当您的断言在某个超时时间内没有得到满足时,您可能有错误或错误的断言。

谢谢您的回答。如果我让这个字段被一个bug禁用,并且我想捕获它,而不抛出错误并中断测试,那该怎么办?如果没有禁用的字段或者它被标记为bug,那么在这种情况下,您必须在try-catch块中编写上述代码,并且必须在catch中指定您期望的异常类型。在catch块中,您可以指定在浏览器中执行的一些其他操作,作为清理的一部分。好主意!下面的代码工作得很好:
试试{
$(“选择[formcontrolname=\'idenifier\']”)。应该是(可见的);
}catch(AssertionError e){
抛出新错误(“抛出了新错误!”);
$("select[formcontrolname=\"idenifier\"]").shouldBe(Condition.visible).isEnabled();