如何只计算WebPage上显示的元素。硒

时间:2014-03-25 07:16:32

标签: c# selenium selenium-webdriver

我有一个带有两个标签的网页。

当我在一个标签上计算元素时,它会让我计算两个标签,但不会计算我点击的标签。

因此,如果我想检查Tab1中存在的元素而不是Tab2,我无法做到这一点,因为我在两个选项卡上都得到相同的结果。

if (driver.FindElements(By.XPath("//div[contains(text(), 'Dummy Text')]")).Count != 0)
{
    // Failed Test message ;
}

在Tab1上我期望count应为0,因为此文本不显示,而Tab2计数应该为8,但两个选项卡上的数量为8。

如何计算在我的页面上而不是在后台显示的元素数量?

我确信这是因为网页上的标签和selenium正在将两个标签视为相同的网页内容。

1 个答案:

答案 0 :(得分:1)

Selenium将返回DOM中的所有对象,而不仅仅是用户可见的对象。

我不相信有任何XPath或CSS选择器允许您只选择可见元素。我可以想到一个潜在的令人讨厌的XPath,确保没有父母显示:没有,但不知道这是否真的有效,听起来太可怕和复杂甚至考虑。

您需要遍历每个返回的元素并检查"显示"返回false。我很想扩展Driver类,使其具有FindDisplayedElements方法,该方法将为您提供此功能。

但是,如果使用RemoteWebDriver,这种方法在API调用方面可能会很昂贵。另一种方法是确保隐藏父对象,因为所有子对象都会继承该行为