Селен: форма не видна даже после применения режима ожидания - PullRequest
0 голосов
/ 01 февраля 2019

Я практикую Selenium с приложением MVC, которое имеет частичное представление.

Когда страница отображается, я вижу отображаемую форму:

 <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.

Я изменил код, чтобы постепенно получить элементы и смог найтиформа и местозаполнитель, где отображается кнопка.

Я использую 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

Что это может быть?

1 Ответ

0 голосов
/ 01 февраля 2019

Вы можете проверить, отображается ли частичное представление формы, проверив размер списка элементов, а затем нажмите кнопку, которую вы хотите нажать, когда размер списка> 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
...