【发布时间】:2020-09-17 16:50:38
【问题描述】:
我正在尝试等待具有特定 css 和内部文本的元素。 我有多个元素满足 css 条件(元素可能是可见/不可见),而 selenium ExpectedConditions 的行为不符合我的要求。
如果我尝试先通过 css 查找元素,然后自己过滤掉,我有时会错过预期的元素,因为某些元素可能没有加载。
By cssBy = By.css("CSS_HERE");
wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(cssBy);
List<WebElement> tabs = driver.findElements(cssBy);
WebElement element =
tabs.stream().filter(tab -> tab.getText().contains("TARGET_TEXT")).findAny().get();
上面的 sn-p 有时会错过满足 CSS 但在 selenium 检查时没有加载的缩进元素。这导致我在第二部分没有匹配的元素。
我尝试使用 textMatches 和定位器
By cssBy = By.css("CSS_HERE");
wait.until(ExpectedConditions.textMatches(cssBy, "TARGET_TEXT");
....
但我认为上面的 sn-p 正在选择它可以找到匹配 CSS 的第一个元素并等待其文本为 TARGET_TEXT,这不是我的意图。
在多个元素匹配定位器的情况下等待文本匹配的任何建议?
【问题讨论】:
标签: java selenium selenium-webdriver webdriver webdriverwait