如何用Selenium C#验证元素aria-disabled属性及等待可点击
Selenium C# 处理带aria-disabled属性的Div按钮
场景示例
Div按钮的两种状态HTML:
- 不可点击状态:
<div id="MainTab" aria-disabled='true'>
- 可点击状态:
<div id="MainTab">
解决方案
1. 判断元素是否存在aria-disabled属性
通过GetAttribute方法获取属性值,返回null或空字符串则表示属性不存在,反之则存在:
IWebElement mainTab = driver.FindElement(By.Id("MainTab")); string ariaDisabledAttr = mainTab.GetAttribute("aria-disabled"); // 判断属性是否存在 bool hasAriaDisabled = !string.IsNullOrEmpty(ariaDisabledAttr); // 可进一步判断按钮是否处于禁用状态 bool isButtonDisabled = hasAriaDisabled && ariaDisabledAttr.Equals("true", StringComparison.OrdinalIgnoreCase);
2. 等待元素可点击后执行点击
由于元素始终可见,需自定义等待条件,等待aria-disabled属性不存在或值不为true后再执行点击:
WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(10)); // 等待元素满足可点击条件 IWebElement targetTab = wait.Until(driver => { IWebElement elem = driver.FindElement(By.Id("MainTab")); string ariaDisabled = elem.GetAttribute("aria-disabled"); return string.IsNullOrEmpty(ariaDisabled) || !ariaDisabled.Equals("true", StringComparison.OrdinalIgnoreCase); }); // 执行点击操作 targetTab.Click();
内容的提问来源于stack exchange,提问作者Rejoice2023
相关产品推荐
相关产品推荐

