Selenium-C#:如何在按钮可单击且在 Blazor Web 应用程序中没有禁用属性时单击它

Selenium-C#: How to click on a button when it is clickable and not having the disabled attribute in Blazor Web Application

我有一个 'save' 按钮,只有当前面的 4 个文本字段都填满文本时才可以点击。

在检查中有 2 个按钮。取消 (Abbrechen) 按钮始终可点击,但保存 (Speichern) 按钮在 HTML 中有一个“禁用”参数,这使得该按钮不可点击。一旦按钮可点击,“禁用”参数就会消失。

<div class="mud-dialog-actions">
  <!--!-->
  <!--!-->
  <button type="button" class="mud-button-root mud-button mud-button-text mud-button-text-default mud-button-text-size-medium mud-ripple button"      _bl_65608b69-0cf8-4c0e-a2ad-634125333afc=""><span class="mud-button-label">Abbrechen</span></button>
  <!--!-->
  <!--!-->
  <button type="submit" class="mud-button-root mud-button mud-button-text mud-button-text-success mud-button-text-size-medium mud-ripple button button--blue" _bl_8df46032-6965-4980-8c8c-6d3881a66eea="" disabled="">
    <span class="mud-button-label">Speichern</span>
  </button>
</div>

我尝试使用这种硒方法:

var element = _webDriverWait.Until(ExpectedConditions.ElementToBeClickable(By.XPath(buttonSelector)));
element.Click();

但是这个方法对我没有帮助,因为它跳转到 element.Click() 即使按钮不可点击,然后抛出异常。

是否有任何其他方法来检查按钮是否可点击?


更新

我也试过:

bool elementEnabled = element.Enabled

它 returns 即使按钮不可点击也始终为真

disabled 时调用带有文本 Speichern 的元素 属性不再存在,导致 for the desired and you can use either of the following :

  • CssSelector:

    new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.CssSelector("div.mud-dialog-actions button[type='submit']:not(disabled)"))).Click();
    
  • XPath:

    new WebDriverWait(driver, TimeSpan.FromSeconds(20)).Until(ExpectedConditions.ElementToBeClickable(By.XPath("//div[@class='mud-dialog-actions']//button[@type='submit' and not(@disabled)]"))).Click();