我正在使用具有部分视图的MVC应用程序练习Selenium。
呈现页面后,我看到显示的表单:
<form action="/MyScreen/SaveData?Length=20" data-ajax="true" data-ajax-complete="handleComplete" data-ajax-failure="CheckError" data-ajax-loading="#loader" data-ajax-method="POST" data-ajax-mode="replace" data-ajax-update="#partialPlaceHolder" id="TicketDetailForm" method="post" novalidate="novalidate">
<div id="partialPlaceHolder" style="width:100%;">
<div id="Ticket-Details"></div>
</div>
</form>
此表单上有一个我需要单击的按钮。
我正在使用“等待”以确保在单击按钮之前显示了表单:
WebDriverWait wait = new WebDriverWait(driver, 20);
WebElement ticketForm = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("TicketDetailForm")));
boolean isForm = ticketForm.isDisplayed();
执行上述代码时,出现以下错误:
预期条件失败:等待所定位元素的可见性 通过By.id:TicketDetailForm。
我修改了代码以逐渐获取元素,并且能够找到表单和呈现Button的占位符。
我正在使用Wait来查找表单的内容:
List<WebElement> forms = renderBody.findElements(By.tagName("form"));
WebElement placeHolder = forms.get(0).findElement(By.xpath("//div[@id='partialPlaceHolder']"));
WebElement ticketDetail = placeHolder.findElement(By.xpath("//div[@id='Ticket_Details']"));
我无法找到ticketDetail`WebElement
那可能是什么?
答案 0 :(得分:0)
您可以检查表单部分视图是否显示,方法是检查其元素列表大小,然后在列表大小> 0时单击要单击的按钮。
例如:
boolean partialViewDisplayed = false;
List<WebElement> partialViewElement= driver.findElements(By.id("Ticket-Details"));
while(!partialViewDisplayed){
if(partialViewElement.size()>0){
//Mark the boolean partialViewDisplayed true
partialViewDisplayed = true;
}
}
//Perform the further operations from here