首页 > 解决方案 > 当 webdriver 在使用 Angular 6 开发的网站上运行时,selenium 中的 isEnabled() 函数始终返回 true

问题描述

当 webdriver 在使用 Angular 6 开发的网站上运行时,selenium webdriver 中的 isEnabled() 函数始终返回 true。我发现与该主题相关的所有答案都谈到 disabled 不是属性,而是写在类中按钮。检查此链接以获取详细说明。

按钮启用或禁用:webdriver 如何决定?

但是我正在处理的网站的代码并没有在课堂上编写。这是我网站的代码。

<button _ngcontent-c61="" class="push-right-sm mat-raised-button mat-primary" color="primary" mat-raised-button="" disabled="">
<span class="mat-button-wrapper">SAVE</span><div class="mat-button-ripple mat-ripple" matripple=""></div><div class="mat-button-focus-overlay"></div></button>

我应该如何检查此元素是否已正确启用?

编辑:这是我通过代码检查它的方法。

WebElement button = driver.findElement(By.xpath("//button/span[contains(text(),'SAVE')]"));
if(button.isEnabled()){ System.out.println("The button is enabled."); }

标签: seleniumselenium-webdriverangular6selenium-chromedriverisenabled

解决方案


您的定位器正在查找SPAN内部BUTTON而不是按钮本身。尝试

//button[./span[.='SAVE']]

注意:在这种情况下您不需要使用contains(),因为整个文本都是“保存”,所以我删除了contains().

这基本上读作 find a BUTTONSPAN其中包含等于“SAVE”的文本。我在您提供的 HTML 上对其进行了测试,并且可以正常工作。


推荐阅读