Selenium 如何等待Vue完成处理?
我正在使用Selenium来测试网页,有时它会变得不可靠,因为它仍在处理“Vue”,代码开始在屏幕上查找元素。但我应该等到vue完成加载 如何等待Vue完成处理 例如,在加载时,我可以看到vue标记:Selenium 如何等待Vue完成处理?,selenium,selenium-webdriver,vue.js,webdriver,webdriverwait,Selenium,Selenium Webdriver,Vue.js,Webdriver,Webdriverwait,我正在使用Selenium来测试网页,有时它会变得不可靠,因为它仍在处理“Vue”,代码开始在屏幕上查找元素。但我应该等到vue完成加载 如何等待Vue完成处理 例如,在加载时,我可以看到vue标记: 通过自定义vue标记不存在的预期条件,这种方法可能值得尝试: protected void waitForTagNonExistence(WebElement element) { WebDriverWait wait = new WebDriverWait(getDriver(), EL
通过自定义vue标记不存在的预期条件,这种方法可能值得尝试:
protected void waitForTagNonExistence(WebElement element) {
WebDriverWait wait = new WebDriverWait(getDriver(), ELEMENT_WAIT_TIMEOUT_SECONDS);
wait.until(new ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver driver) {
try {
return (element.getAttribute("v-touch:tap") == null);
} catch (NullPointerException nullPointerException) {
return false;
}
}
});
}
受保护的void waitForTagNonExistence(WebElement元素){
WebDriverWait wait=新的WebDriverWait(getDriver(),元素\等待\超时\秒);
等待.直到(新的ExpectedCondition(){
公共布尔应用(WebDriver驱动程序){
试一试{
返回(element.getAttribute(“v-touch:tap”)==null);
}捕获(NullPointerException NullPointerException){
返回false;
}
}
});
}
您可以将wait
函数与以下xPath
一起使用:
driver.wait(until.elementIsClickable(By.xpath("//img[not(@v-on:click = 'drop') and @src = 'img/end_call.svg']")), 15000);
xPath使用而不是和和not
表示将选择不带@v-on:click='drop'
属性的元素和
是使用@src='img/end\u call.svg'
选择一个元素,而不是使用@v-on:click='drop'
可以找到有关xPath运算符的更多信息。从功能上讲,Selenium不直接依赖于AUT1是通过、还是构建的。从Selenium的角度来看,最重要的是您希望与之交互的WebElement的不同状态(如下所述):
出席
可见
可交互(即可点击)
因此,基本上,您需要诱导服务员,即WebDriverWait,使所需元素处于所需状态,如下所示:
- :
- :
- :
根据您共享的HTML,等待所需元素可单击,您可以使用以下解决方案:
browser.wait(until.elementIsClickable(By.xpath("//img[@src='img/end_call.svg']")), 20);
1正在测试的应用程序
更新
根据您的评论更新,如果元素变得可交互我在发送字符序列
时没有看到任何障碍。但是,如果在Vue完成处理后字符序列
消失,我们可以将预期条件
用作
在这里,您可以在中找到关于JavaScript\uuuu doPostBack
的类似讨论。您是否询问等待特定元素或整个页面?任何情况都适合我。我想找到一个元素,但要等到它上面没有“vue”标记为止。@AutomatedOwl你说得对。我已改为可点击。感谢您的反馈。很抱歉,我仍然应该等待Vue完成处理,因为页面一旦完成就会刷新(这是第一种情况)。因此,如果Selenium在刷新完成之前获取元素,它可能会不稳定。@alansiqueira27检查我的答案更新,并告诉我这是否回答了您的问题。
var EC = protractor.ExpectedConditions;
// Waits for the element with id 'abc' to be visible on the dom.
browser.wait(EC.visibilityOf($('#abc')), 5000);
var EC = protractor.ExpectedConditions;
// Waits for the element with id 'abc' to be clickable.
browser.wait(EC.elementToBeClickable($('#abc')), 5000);
browser.wait(until.elementIsClickable(By.xpath("//img[@src='img/end_call.svg']")), 20);