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();
我有一个 '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 的元素 属性不再存在,导致
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();