繁体   English   中英

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

[英]How to count only elements displayed on WebPage. Selenium

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

当我在一个选项卡上获得元素计数时,它将为我同时显示两个选项卡的计数,而不是我单击的那个计数。

因此,如果我要检查Tab1上存在的元素,而不是Tab2上没有的元素,则无法执行此操作,因为在两个选项卡上都得到相同的结果。

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

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

如何获取显示在页面而非背景中的元素的数量?

我敢肯定这是因为网页上的标签页,硒将这两个标签页视为相同的网页内容。

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

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

您需要遍历每个返回的元素,并检查“ displayed”是否返回false。 我很想将Driver类扩展为具有FindDisplayedElements方法,该方法将为您包装此功能。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM