我正在使用 ScalaTest、FlatSpec 和 Selenium 进行测试,这是一个带有 Bootstrap3 和 JQuery 的 Scala 应用程序,并且我在 Select2 元素上遇到了奇怪的行为。
当我想单击 Select2 元素时,我会尝试以下选项:
click on xpath("... My XPath ...")
或者
click on cssSelector(" ... My cssSelector ...")
或者
blahblah.webElement.click()
所有这些可能性都很好,但我发现了一个例外。
这是我使用 BootStrap 3 定义的 Select 元素:
// mySelect1
@b3.select( filterForm("mySelect1"), ("" -> "All") +: mySelect1.values.map(r => r.code -> Messages("mySelect1." + r.code)), '_label -> Messages("mySelect1"), '_class -> "col-md-4 col-sm-6 col-xs-12" )
// mySelect2
@b3.select( filterForm("mySelect2"), options = Seq(""->"All", "true"->"Yes", "false"->"No"), '_label -> Messages("mySelect2"), '_class -> "col-md-4 col-sm-6 col-xs-12" )
// mySelect3
@b3.select( filterForm("mySelect3"), options = Seq(""->"All", "true"->"Yes", "false"->"No"), '_label -> Messages("mySelect3"), '_class -> "col-md-4 col-sm-6 col-xs-12" )
当我想单击第一个 Select2 (mySelect1) 时,我得到了经典错误:
InvalidElementStateException:元素被禁用,因此不能用于操作
但是当我单击其他两个(mySelect2 和 mySelect3)元素时,效果很好。只有第一个会引发错误。
如果我更改定义顺序,则会在第一个上再次重现该行为。不是其他人。
// mySelect2
@b3.select( filterForm("mySelect2"), options = Seq(""->"All", "true"->"Yes", "false"->"No"), '_label -> Messages("mySelect2"), '_class -> "col-md-4 col-sm-6 col-xs-12" )
// mySelect3
@b3.select( filterForm("mySelect3"), options = Seq(""->"All", "true"->"Yes", "false"->"No"), '_label -> Messages("mySelect3"), '_class -> "col-md-4 col-sm-6 col-xs-12" )
// mySelect1
@b3.select( filterForm("mySelect1"), ("" -> "All") +: mySelect1.values.map(r => r.code -> Messages("mySelect1." + r.code)), '_label -> Messages("mySelect1"), '_class -> "col-md-4 col-sm-6 col-xs-12" )
最后,如果只点击第二个和第三个,忘记第一个,我没有任何错误,它工作正常。
这是一个错误吗?有人发现过这样的吗?它发生在 Chrome、Firefox 和 IE 上。