我在页面上有以下angular.js.显示的项目是angular.js Li项目.一个是灰色的,另一个是启用的.当我使用Selenium webdriver方法.isEnabled()时,灰色和启用的项都返回“启用”.
第一个问题是如何使用.isEnabled()来处理这种类型的元素?
Q
第二个问题是,假设webdriver不会这样做,我需要xpath,我想我可以使用这样的东西:
$x("//li[@class ='ng-scope disabled' and @id='actionCUSTARD']")
$x("//li[@class ='ng-scope' and @id='actionRHUBARB']")
第一个返回的东西只有在给定的id被禁用时才会返回,第二个只在给定的Id被启用时返回,这可以构建到Java方法中以检查对于给定的id,元素是启用还是禁用.有更简单的方法吗?
</li>
<li id="actionRHUBARB" class="ng-scope" on="deriveInvokeType(action)" ng-switch="" ng-class="{'disabled': false}" ng-repeat="action in getActionList()">
<!--
ngSwitchWhen: LINK_DYNAMIC
-->
<!--
ngSwitchWhen: NO_INVOKE_PERMISSION
-->
<!--
ngSwitchDefault:
-->
<a class="ng-scope ng-binding" ng-click="doAction(action)" ng-switch-default="" href=""></a>
</li>
<li id="actionCUSTARD" class="ng-scope disabled" on="deriveInvokeType(action)" ng-switch="" ng-class="{'disabled': true}" ng-repeat="action in getActionList()">
<!--
ngSwitchWhen: LINK_DYNAMIC
-->
<!--
ngSwitchWhen: NO_INVOKE_PERMISSION
-->
<!--
ngSwitchDefault:
-->
<a class="ng-scope ng-binding" ng-click="doAction(action)" ng-switch-default="" href=""></a>
</li>
最佳答案 该元素可能被禁用,并且样式指针事件设置为none,而不考虑.isEnabled().如果是这种情况,您可以评估.getCssValue返回的CSS值:
boolean isEnabled = !"none".equals(element.getCssValue("pointer-events"));
或者使用一段JavaScript:
boolean isEnabled = (boolean)((JavascriptExecutor)driver).executeScript(
"return window.getComputedStyle(arguments[0], null).getPropertyValue('pointer-events') === 'none'"
, element);
您还可以通过检查类禁用的存在来确定状态,但不能保证实现的样式禁用该元素.