2013-10-11 2 views
3

Pic прилагается для получения более подробной информации, пожалуйста, следуйте ::! [Я хочу ввести текст в текстовой области: упомянутый на фото] [1] [1]: http://i.stack.imgur.com/sai92.png Я хочу ввести текст в текстовую область, но возникает ошибка в том, что элемент не найден. Я пробовал с X путь, имя и идентификатор, но не смог выполнить этот код и хочу играть с другими элементами, появившимися на странице для целей тестирования, но ничего !!! Я не знаю, что это может быть обработка с помощью java-executor или switch window (всплывающее окно). Ниже упоминается java-код. Как справиться с этой ситуацией, пожалуйста, помогите с полной детализацией.Java Selenium-webdriver: Введите текст в текстовую область

Java код:

@Test 
public void CreteLead() throws InterruptedException 
{ 
    WebElement _loginName = 
     driver.findElement(By.xpath(OR.getProperty("username"))); 

    _loginName.sendKeys(OR.getProperty("loginId")); 

    WebElement _password = 
     driver.findElement(By.xpath(OR.getProperty("password"))); 
      _password.sendKeys(OR.getProperty("loginPassword")); 
    WebElement _login = 
     driver.findElement(By.xpath(OR.getProperty("login"))); 

    _login.click(); 
    Thread.sleep(5000); 

    WebElement _New = 
     driver.findElement(By.xpath(OR.getProperty("New"))); 

    _New.click(); 
    Thread.sleep(10000); 
    driver.findElement(By.id("btnCreateCustomer")).click(); 

HTML код:

<table class="tbl_top_align" width="100%" cellspacing="3" cellpadding="0"> 
    <tbody> 
    <tr> 
    <tr> 
    <tr> 
    <tr id="trBranch"> 
    <tr id="trAssign"> 
     <td> Assign To*: </td> 
     <td> 
     <table cellspacing="0" cellpadding="0"> 
      <tbody> 
      <tr> 
       <td style="font-weight: normal !important;"> 
       <div 
        id="ctl00_CPHPageContents_ctl00_CPHPageContents_ddlAssignedToPanel" 
        class="RadAjaxPanel" style="display: block;" 
       > 
        <span id="RequiredFieldValidator1" 
        class="error_message" style="display:none;" 
        >* missing</span> 
       </td> 
       <td style="vertical-align: middle !important;"> 
       <td style="vertical-align: middle !important;"> Referral </td> 
      </tr> 
      </tbody> 
     </table> 
     </td> 
    </tr> 
    <tr> 
     <td style="padding: 4px 0 5px;"> Follow-up on: </td> 
     <td style="padding: 4px 0 5px;"> 
      <a id="btnFollowUp" 
      href="javascript:__doPostBack('ctl00$CPHPageContents$btnFollowUp','')" 
      >Not Scheduled</a> 
     </td> 
     </tr> 
     <tr> 
     <td> Account: </td> 
     <td> 
      <span id="ctl00_CPHPageContents_txtAccount_wrapper" 
      class="riSingle RadInput RadInput_Default" style="width: 160px;"> 
     </td> 
     </tr> 
     <tr> 
     <td> Value: </td> 
     <td> 
      <span id="ctl00_CPHPageContents_txtAccountValue_wrapper" 
      class="riSingle RadInput RadInput_Default" style="width: 125px;"> 
     </td> 
     </tr> 
     <tr> 
     <td>Description*:</td> 
     <td> 
      <textarea id="txtInstructions" class="schedule_notes" 
      style="height: 95px; width: 294px !important;" cols="20" rows="2" 
      name="ctl00$CPHPageContents$txtInstructions" 
      /> 
      <span id="RequiredFieldValidator2" class="error_message" 
      style="display:none;">* missing</span> 
     </td> 
     </tr> 
     <tr> 
    </tbody> 
    </table> 
    <div class="action_buttons"> 
    </div> 

ответ

0

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

switchTo() окно (ручка)

И, конечно же, проблема заключается, чтобы найти обработчик.. После того, как вы находитесь во всплывающем окне, вы можете искать элементы и использовать их. Here у вас есть полезная информация об этой проблеме с некоторым объяснением.

+0

Теперь у меня есть этот код, но не удалось найти элемент и показать идентификатор окна. winHandleBefore = driver.getWindowHandles(); \t \t itrate = winHandleBefore.iterator(); \t \t win = itrate.next(); \t \t System.out.println ("pop up" + win); \t \t driver.switchTo(). Window (win); \t \t \t \t driver.findElement (By.xpath ("// HTML/тело/DIV [1]/форма/дел [3]/DIV/стол/TBODY/тр [9]/тд [2]/TextArea ")) SendKeys (." тест "); –

5

я столкнулся с аналогичной проблемой с текстовым полем, если вы можете SendKeys к предыдущему полю ввода, просто используйте TAB, чтобы перейти к следующему полю (TEXTAREA) и введите текст, он работал для меня

driver.findElement(By.id("id_of_previous_input_field")).sendKeys(Keys.TAB,"This text will appear in textarea"); 
+0

Более продвинутый фрагмент, если textarea необходимо очистить до: 'webdriver.findElement (<локатор предыдущего элемента>). SendKeys (Keys.TAB, Keys.chord (Keys.COMMAND,« a »),« Этот текст заменит текст в textarea ");' – aianitro

-1

В вашем тестовом методе сначала вам необходимо сохранить WindowHandle окна родительского браузера следующим образом.

String parentWindowId = driver.getWindowHandle(); // This should be the first line in your test method 

После того, как код для нажатия кнопки «Создать» (который открывает всплывающее окно), введите следующий код.

+0

в моем html нет ярлыка. Описание *: <текстовое поле ID = "txtInstructions" класс = "schedule_notes" стиль = "высота: 95px; ширина: 294px важно;!" cols = "20" rows = "2" name = "ctl00 $ CPHPageContents $ txtInstructions" />

Смежные вопросы