selenium 中的 isEnabled() 函数总是 returns true,当 webdriver 在使用 Angular 6 开发的站点上为 运行 时
isEnabled() function in selenium always returns true, when webdriver is running on sites developed using Angular 6
selenium webdriver 中的 isEnabled() 函数 returns 当 webdriver 在使用 Angular 开发的站点上 运行 时,始终为真 6. 所有相关答案对于这个话题,我发现谈到禁用不是属性而是写在按钮的 class 中。检查此 link 以获得详细说明。
Button enabled or disabled : How does webdriver decide?
但是我正在做的网站的代码没有写在class里面。这是我网站的代码。
<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."); }
您的定位器正在 BUTTON
内找到 SPAN
而不是按钮本身。尝试
//button[./span[.='SAVE']]
注意:在这种情况下您不需要使用 contains()
,因为整个文本都是 "SAVE",所以我删除了 contains()
.
这基本上读作找到 BUTTON
,其中 SPAN
包含等于 "SAVE" 的文本。我在您提供的 HTML 上对其进行了测试,它正在运行。
selenium webdriver 中的 isEnabled() 函数 returns 当 webdriver 在使用 Angular 开发的站点上 运行 时,始终为真 6. 所有相关答案对于这个话题,我发现谈到禁用不是属性而是写在按钮的 class 中。检查此 link 以获得详细说明。
Button enabled or disabled : How does webdriver decide?
但是我正在做的网站的代码没有写在class里面。这是我网站的代码。
<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."); }
您的定位器正在 BUTTON
内找到 SPAN
而不是按钮本身。尝试
//button[./span[.='SAVE']]
注意:在这种情况下您不需要使用 contains()
,因为整个文本都是 "SAVE",所以我删除了 contains()
.
这基本上读作找到 BUTTON
,其中 SPAN
包含等于 "SAVE" 的文本。我在您提供的 HTML 上对其进行了测试,它正在运行。