【问题标题】:Check if element is interactable in C# Selenium/ChromeDriver app?检查元素在 C# Selenium/ChromeDriver 应用程序中是否可交互?
【发布时间】:2021-01-25 20:35:10
【问题描述】:

我有一个 C# Selenium 应用程序,它使用支持 Chrome 88 的 ChromeDriver/WebDriver NuGet 包。我的 Chrome 版本是 88.0.4324.104。

我正在使用的一些网页有多个具有相同 classtagName 的 BUTTON 元素,因此当我执行 FindDomElement() 使用我想要的 xpath 调用,我得到多个匹配的元素。只有一个返回的元素是可交互的,而其他的则不是。现在,我尝试对每个元素执行“Click()”调用,直到找到正确的元素,为失败的元素捕获 ElementNotInteractableException 异常。

有没有办法询问 Selenium 元素是否可交互?

请注意,所有元素都是 可见启用,我已经知道如何通过 C# 检查这些属性的状态。在这种情况下,它们只是没有有帮助。

【问题讨论】:

  • 使用基于文本的相关 HTML 和您的代码试验更新问题。
  • 只有一个返回的元素是可交互的 - 你是如何识别的?在代码中? 2 个按钮(可交互和不可交互)之间的哪些值设置不同?

标签: c# selenium click


【解决方案1】:

扩展方法在这里可能是更好的解决方案。如果元素被点击,它将返回true,如果元素不可交互,则返回false

public static class WebElementExtensions
{
    public static void TryClick(this IWebElement element)
    {
        try
        {
            element.Click();

            return true;
        }
        catch (ElementNotInteractableException)
        {
            return false;
        }
    }
}

那么这只是一个简单的测试:

if (button.TryClick())
{
    // Button was clicked successfully
}
else
{
    // Button is not interactable
}

【讨论】:

    猜你喜欢
    • 2018-07-09
    • 1970-01-01
    • 2018-07-09
    • 1970-01-01
    • 2020-11-14
    • 2020-08-15
    • 1970-01-01
    • 2015-02-15
    • 2021-08-02
    相关资源
    最近更新 更多