【问题标题】:How to check if an icon element is visible?如何检查图标元素是否可见?
【发布时间】:2020-08-06 01:54:57
【问题描述】:

我有一个网站,每次检测到网站内容有问题时都​​会显示一个警告图标。

此图标的标签始终存在于背景中,但图标本身仅在标签具有 ::before 时才可见。

现在我需要做的是验证标签是否已填充,这样我就可以确保每次出现图标时都能捕捉到它。

我现在的代码总是检测图标,因为它只捕获标签本身,而不是它的内容。

请告诉我一个更好的方法来做到这一点,提前谢谢你!

if(driver.FindElement(By.Id("alertmsgBtn")) != null)
            {

                Console.WriteLine("Warning Alert Present");
            }
            else
            {
                Console.WriteLine("No Warning");
            }

【问题讨论】:

  • 如果你使用网络元素的可见性呢?
  • 是的,我试图使用这个 ElementIsVisible(),但我不确定它是否仍然受支持,因为我没有真正看到最近的示例代码,这就是我在这里发布的原因。跨度>
  • 当图标不可见时,能否添加的html内容?
  • 您能否分享页面上不存在(显示)的元素的html。你检查过driver.FindElement(By.Id("alertmsgBtn")).is_displayed()吗?
  • @supputuri 谢谢你,它实际上只需要一点改变。将其更改为 .Displayed

标签: c# selenium selenium-webdriver selenium-chromedriver


【解决方案1】:

如果我猜对了,那么下面的代码应该适合你:

            if (driver.FindElement(By.CssSelector("#alertmsgBtn icon")) != null)
            {            
                Console.WriteLine("Warning Alert Present");
            }
            else
            {
                Console.WriteLine("No Warning");
            }

我们在其中搜索 id 为 alertmsgBtn 和元素 icon 的元素。 如果图标可见时还有另一个元素,那么在我的示例中,您可以简单地将该元素的名称替换为 icon

【讨论】:

    【解决方案2】:

    如果它在没有警告的情况下使用aria-hidden="true"隐藏图标,那么您可以使用GetAttribute("aria-hidden")检查它的值是真还是假来做出决定。

    String IsHidden = driver.FindElement(By.Id("alertmsgBtn")).GetAttribute("aria-hidden");
    if( IsHidden == "true" ) {
       Console.WriteLine("No Warning");
    } else {
       Console.WriteLine("Warning Alert Present");
    }
    

    【讨论】:

    • 只有在 ::before 存在时才会出现
    猜你喜欢
    • 2017-01-01
    • 2012-07-08
    • 1970-01-01
    • 2014-04-22
    • 2012-04-21
    • 2011-02-08
    • 2010-10-03
    • 2023-03-04
    • 1970-01-01
    相关资源
    最近更新 更多