0

我有一个 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
4

2 回答 2

1

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

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

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

我希望这有帮助。祝一切顺利 :-)

于 2012-12-06T11:26:41.230 回答
0

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

    if (element.Visible)
    {
        element.click();
    }
于 2012-12-06T17:59:38.340 回答