【发布时间】:2019-06-26 07:10:27
【问题描述】:
我正在使用具有局部视图的 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>
这个表单有一个我需要点击的按钮。
我正在使用 Wait 来确保在单击按钮之前显示表单:
WebDriverWait wait = new WebDriverWait(driver, 20);
WebElement ticketForm = wait.until(ExpectedConditions.visibilityOfElementLocated(By.id("TicketDetailForm")));
boolean isForm = ticketForm.isDisplayed();
执行上述代码时,出现以下错误:
预期条件失败:等待定位元素的可见性 by 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
那可能是什么?
【问题讨论】:
标签: ajax selenium-webdriver ajaxform webdriverwait