2017-02-16 1 views
0

Я использую селен, чтобы заполнить поле p: calendar. Вместо использования выбора даты, Я посылаю ключи непосредственно в поле.sendKeys с p: calendar не дает достоверных результатов от одного прогона к другому

webDriver.findElement(By.id("theId").sendKeys("06031984"); 

До и после этого, я взаимодействия с различными другими элементами на странице. При каждом запуске, я получаю различные значения появляется в моем поле ввода даты - и редко их правильные:

  • 40.60.3198
  • 98.40.6031
  • 06.03.1984 < - Корректные

порядок ключей, кажется, сдвигается, вероятно Аякса вызовов в р: календарь:

<p:calendar id="theId" styleClass="date-input" 
      binding="#{date}" navigator="true" 
      value="#{aView.date}" 
      validator="dateValidator" 
      yearRange="#{validatorService.dateRange}" 
      pattern="dd.MM.yyyy" mask="99.99.9999" readonlyInput="false" 
      readonly="false" required="true" showOn="button" 
      requiredMessage="#{i18n['aMsg']}" 
      locale="de"> 
    <p:ajax event="dateSelect" 
      update="many elements" 
      oncomplete="updateTabbing();" /> 
    <p:ajax event="change" 
      update="many elements" 
      oncomplete="updateTabbing();" /> 
</p:calendar> 

Есть ли способ обеспечить правильное значение в поле? До сих пор я нахожу работу с Selenium (и страницей JSF), чтобы быть немного хлопот.

ответ

0

Мы можем попытаться добавить немного подождать и отправить вкладку ключ

или инъекционного Java Script для значения будет решить эту проблему

driver.manage(). Таймаута(). ImplicitlyWait (60, TimeUnit.SECONDS);

Драйвер JavascriptExecutor js = (JavascriptExecutor); js.executeScript ("document.getElementsByid ('theId'). Value = '06 .03.1984 ';");

Пожалуйста, дайте мне знать, если это решение проблемы.

+0

Я уже пробовал ждать и вкладки, но это не сработало. Идея Javascript хорошая, однако я получаю эту ошибку: org.openqa.selenium.WebDriverException: неизвестная ошибка: document.getElementsByid не является функцией – Tim

+0

Я изменил JavaScript на это, и теперь он работает: js.executeScript («document. getElementById ('theId'). value = '06 .03.1984 '; "); Просто отредактируйте свой ответ, и я приму его. – Tim

+0

Спасибо Тиму, я начал сегодня вкладывать в StackoverFlow. рад, что я мог найти какое-то решение ура -Dharam – Dharam