我有一个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
答案 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();
}