作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试创建一个函数来过滤 ElementsCollection
,条件是每个元素的子元素而不是元素本身。
这是我想出的:
public static ElementsCollection filterByChild(ElementsCollection elementsCollection, String childCssSelector,
Condition condition) {
Predicate<SelenideElement> childHasConditionPredicate = element -> element.$(childCssSelector).has(condition);
elementsCollection.removeIf(childHasConditionPredicate);
return elementsCollection;
}
像这样调用这个函数时:
myCollection = SelenideHelpers.filterByChild(myCollection, "a", Condition.text("http://www.link.com");
我收到以下错误消息:
java.lang.UnsupportedOperationException: Cannot remove elements from web page
我没有在这个错误消息中找到任何可以应用于我的代码的相关信息。我想知道为什么会出现此消息。
最佳答案
检查如何 SelenideElementIterator设计:
@Override
public void remove() {
throw new UnsupportedOperationException("Cannot remove elements from web page");
}
要使其正常工作,您需要创建自定义条件,例如:
import com.codeborne.selenide.Condition;
import com.codeborne.selenide.ElementsCollection;
import org.openqa.selenium.By;
import org.openqa.selenium.WebElement;
import static com.codeborne.selenide.Selenide.$$;
public static Condition hasChildWithCondition(final By locator, final Condition condition) {
return new Condition("hasChildWithCondition") {
@Override
public boolean apply(WebElement element) {
return element.findElements(locator).stream().anyMatch(child -> condition.apply(child));
}
public String toString() {
return this.name
}
};
}
然后用它来过滤:
ElementsCollection collection = $$(".parent");
Condition hasChild = hasChildWithCondition(By.cssSelector("a"), Condition.text("http://www.link.com"));
collection.filterBy(hasChild);
关于java - 过滤 ElementsCollection,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47261998/
我正在尝试创建一个函数来过滤 ElementsCollection,条件是每个元素的子元素而不是元素本身。 这是我想出的: public static ElementsCollection filt
我最近开始使用 Selenide,我喜欢它所允许的流畅代码。然而,我对 ElementsCollection 确实有一个奇怪的问题。 $$("some ref").filterBy(not(attri
正如您在文档中看到的,waitUntil 方法受到 ElementsCollection 的保护: http://selenide.org/javadoc/3.7/com/codeborne/sele
我正在尝试为集合编写 if 语句,但遇到了问题。例如,以下元素具有 li 标记,用于指示该元素是否处于 Activity 状态: Color:
我是一名优秀的程序员,十分优秀!