Получить все видимые элементы на веб-странице - PullRequest
2 голосов
/ 14 декабря 2011

Мне нужно, чтобы все видимые элементы на веб-странице нажимали на них, но слишком долго проверять каждый элемент с помощью .displayed?Селеновый метод.Есть ли другой способ создать массив только с видимыми элементами, чтобы избежать проверки.

Кажется, мне нужны только не-серые элементы из firebug.

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

запрос не решает мою проблему, потому чтоне все невидимые элементы имеют такой атрибут.

Ответы [ 2 ]

2 голосов
/ 14 декабря 2011

Если вы используете C # .NET, вы можете использовать лямбда-выражение для удаления любых элементов, которые не отображаются. Если нет, то это не сработает. Это даст вам каждый элемент привязки, элемент ввода и элемент select. Тогда он удалит все, что не отображалось.

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();
}
0 голосов
/ 14 декабря 2011

Я знаю, что это не помечено, но используя jQuery видимый селектор , это так же просто, как :visible.

...