获取网页上的所有可见元素

时间:2011-12-14 11:10:58

标签: xpath selenium firebug css-selectors

我需要在网页上获取所有可见元素才能点击它们,但是用.displayed检查每个元素太长了吗?硒法。是否有另一种方法来创建仅包含可见元素的数组,以避免检查。

似乎我只需要来自萤火虫的非灰色元素。

//*[not(contains(@style,'display:none'))]

请求无法解决我的问题,因为并非所有不可见元素都具有此属性。

2 个答案:

答案 0 :(得分:2)

如果您使用的是C#.NET,则可以使用lambda表达式删除任何未显示的元素。如果没有,那么这将不起作用。这将获得每个锚元素,输入元素和选择元素。然后它将删除任何未显示的内容。

browserDriver.Navigate().GoToUrl("http://www.yahoo.com/");
List<IWebElement> theseElements = browserDriver.FindElements(By.TagName("a")).ToList();
theseElements.AddRange(browserDriver.FindElements(By.TagName("input")).ToList());
theseElements.AddRange(browserDriver.FindElements(By.TagName("select")).ToList());
theseElements.RemoveAll(i => !i.Displayed); //LAMBDA EXPRESSION
foreach (IWebElement element in theseElements)
{
    element.Click();
}

答案 1 :(得分:0)

我知道这不会被标记,但使用jQuery visible selector,就像:visible一样简单。