如何在Selenide中等待一个或另一个元素?在Selenium3中,我通过使用以下代码设法做到了这一点:
public void waitForOneorOtherElement(SelenideElement element1, SelenideElement element2) {
waitForIgnoreStale(ExpectedConditions.or(ExpectedConditions.visibilityOf(element1), ExpectedConditions.visibilityOf(element2)), defaultWait);
}但是,塞勒尼德的装备是什么呢?
发布于 2023-04-04 02:26:43
在Selenide中,可以使用$方法查找多个元素,使用waitUntil方法等待它们中的任何一个元素出现。下面是一个示例,说明如何在Selenide中等待两个元素之一:
import static com.codeborne.selenide.Condition.*;
import static com.codeborne.selenide.Selenide.*;
public void waitForOneorOtherElement(SelenideElement element1, SelenideElement element2) {
$x(element1.getXPath() + "|" + element2.getXPath())
.shouldHaveSize(1)
.waitUntil(visible, defaultWait);
}在本例中,我们使用$x方法使用XPath查找元素,并使用|运算符将两个元素的XPaths连接起来以查找其中的任何一个元素。生成的元素列表应该大小为1,这意味着其中任何一个元素都存在。然后,我们使用waitUntil方法等待该元素变得可见,并使用defaultWait超时(您可以将其定义为常量)。
请注意,可以将$x方法替换为在Selenide中返回元素列表的任何其他方法,例如$ (用于CSS选择器)或findAll (用于Selenide条件)。
我希望这能帮到你!有关更多信息,您可以参考Selenide关于查找元素和等待满足条件的文档。
编辑:
在这种情况下,不需要shouldHaveSize(1)方法,因为我们只是在寻找任何一个元素的存在,而不是专门检查结果元素列表的大小。
关于getXPath()方法的使用,它不是Selenide中的一种方法,我对前面回答中的错误表示歉意。您可以使用By.xpath()方法来获取元素的XPath。
下面是一个更新的示例代码片段,应该可以工作:
import static com.codeborne.selenide.Condition.*;
import static com.codeborne.selenide.Selenide.*;
public void waitForOneOrOtherElement(SelenideElement element1, SelenideElement element2) {
$(By.xpath(element1.getXPath() + " | " + element2.getXPath()))
.waitUntil(visible, defaultWait);
}在本例中,我们使用By.xpath()方法来获取每个元素的XPath,然后使用|运算符将它们连接起来,形成与其中任何一个元素匹配的XPath表达式。然后,我们使用结果表达式来使用$(...)方法查找元素,然后等待,直到至少有一个元素使用waitUntil(visible, defaultWait)方法可见。
我希望这个最新的答案能帮助你解决你的问题。如果您有任何进一步的问题或关切,请不要犹豫地问。
https://sqa.stackexchange.com/questions/51483
复制相似问题