我需要获取网页上的所有可见元素才能点击它们,但是用 .displayed 检查每个元素太长了? Selenium 法。是否有另一种方法来创建仅包含可见元素的数组以避免检查。
看来我只需要来自 Firebug 的非灰色元素。
//*[not(contains(@style,'display:none'))]
请求没有解决我的问题,因为不是所有的不可见元素都有这样的属性。
最佳答案
如果您使用的是 C#.NET,则可以使用 lambda 表达式删除任何未显示的元素。如果没有,那么这将行不通。这将为您提供每个 anchor 元素、输入元素和选择元素。然后它将删除所有未显示的内容。
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();
}
关于xpath - 获取网页所有可见元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8503516/