过滤现有的SeleniumElement

时间:2012-12-05 17:14:39

标签: java selenium

我有一个SeleniumElement代表页面上的几个元素,我想将其过滤为仅包含":visible"个元素。

我可能能够将原始构造函数优化为仅包含一个元素,但我问我是否可以做一些不同的事情:给定一个特定元素,创建一个过滤此元素选择器的新元素。

这样的事情:

public static SeleniumElement visible(SeleniumElement element) {
    // Locator.filter() doesn't really exist, the next line won't compile
    By locator = element.getElementLocator().filter(":visible"); 
    return new SeleniumElement(element.getName(), locator, element.getPage());
}

visible(myButton).click();

// Calling myButton.click() fails because there are multiple elements that match
// the selector. However, only one of them is visible right now

2 个答案:

答案 0 :(得分:1)

如果您想通过其可见性过滤元素,那么使用CSS Selector将是一个不错的选择。

我添加了css属性Display和Visibility。因此,您可以使用任何一个属性/属性来查找目标元素。 (C#代码)

IWebElement Query = driver.FindElement(By.XPath("Element Xpath")).FindElement(By.CssSelector("[@style='display: block;Visibility: hidden']"));

我希望这会有所帮助。所有最好的: - )

答案 1 :(得分:0)

或者您可以根据元素是否可见来执行点击。

    if (element.Visible)
    {
        element.click();
    }