selenium中ByAll的用法
阿新 • • 發佈:2018-12-28
ByAll其實是一個儲存By的一個數組類,因為實現了java.io.Serializable方法所以可以用作遠端控制。
import org.openqa.selenium.By; import org.openqa.selenium.NoSuchElementException; import org.openqa.selenium.SearchContext; import org.openqa.selenium.WebElement; import java.io.Serializable; import java.util.ArrayList; import java.util.List; public class ByAll extends By implements Serializable { private static final long serialVersionUID = 4573668832699497306L; private By[] bys; public ByAll(By... bys) { this.bys = bys; } @Override public WebElement findElement(SearchContext context) { for (By by : bys) { List<WebElement> elements = context.findElements(by); if (!elements.isEmpty()) { return elements.get(0); } } throw new NoSuchElementException("Cannot locate an element using " + toString()); } @Override public List<WebElement> findElements(SearchContext context) { List<WebElement> elems = new ArrayList<>(); for (By by : bys) { elems.addAll(context.findElements(by)); } return elems; } @Override public String toString() { StringBuilder stringBuilder = new StringBuilder("By.all("); stringBuilder.append("{"); boolean first = true; for (By by : bys) { stringBuilder.append((first ? "" : ",")).append(by); first = false; } stringBuilder.append("})"); return stringBuilder.toString(); } }