java
  • selenium
  • selenium-webdriver
  • 2016-08-24 3 views 0 likes 
    0

    Я пытаюсь ввести текст (111) в текстовые поля, и я пробовал почти все локаторы элементов, трюки Javascript и текст просто не попадают в поля.Selenium Webdriver: ввод текста в текстовое поле -element не отображается

    я пытался:

    driver.findElement(By.xpath("//div[@class='input-wrapper icon wupid']")).sendKeys("111"); 
    Thread.sleep(2000); 
    

    ошибка:

    Exception in thread "main" org.openqa.selenium.ElementNotVisibleException: element not visible

    HTML-код:

    <form id="form-resetpass" method="post" action="" _lpchecked="1"> 
    <div class="input-wrapper icon wupid"> 
    <label for="wupid">תעודת זהות</label> 
    <input class="only-numbers ltr" type="text" value="" maxlength="9" name="wupid" style="background-image: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAASCAYAAABSO15qAAAAAXNSR0IArs4c6QAAAPhJREFUOBHlU70KgzAQPlMhEvoQTg6OPoOjT+JWOnRqkUKHgqWP4OQbOPokTk6OTkVULNSLVc62oJmbIdzd95NcuGjX2/3YVI/Ts+t0WLE2ut5xsQ0O+90F6UxFjAI8qNcEGONia08e6MNONYwCS7EQAizLmtGUDEzTBNd1fxsYhjEBnHPQNG3KKTYV34F8ec/zwHEciOMYyrIE3/ehKAqIoggo9inGXKmFXwbyBkmSQJqmUNe15IRhCG3byphitm1/eUzDM4qR0TTNjEixGdAnSi3keS5vSk2UDKqqgizLqB4YzvassiKhGtZ/jDMtLOnHz7TE+yf8BaDZXA509yeBAAAAAElFTkSuQmCC"); background-repeat: no-repeat; background-attachment: scroll; background-size: 16px 18px; background-position: left center;"> 
    </div> 
    

    , почему я не могу ввести значение?

    +0

    Ваш водитель быстрее, чем ваш двигатель рендеринга. Вам нужно подождать, пока элемент загрузится (т. Е. Он будет виден), а затем вы сможете получить к нему доступ. Также обратите внимание, что только потому, что он отображается в html, он может быть скрыт от css. –

    ответ

    1

    Пожалуйста, попробуйте приведенный ниже код. Пожалуйста, не то, чтобы он был на C#, пожалуйста, преобразуйте его в формат java.

    WebDriverWait mywait = new WebDriverWait(driver,TimeSpan.FromSeconds(30)); 
    IWebElement txtbox = mywait.Until(ExpectedConditions.ElementIsVisible(By....)); 
    txtbox.SendKeys("111"); 
    
    3

    Вы можете использовать концепцию ожидания для этого.

    неявная Wait:

    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); 
    

    или использовать явное ожидания + ожидаемое состояние:

    WebDriverWait wait = new WebDriverWait(driver, 10); 
    WebElement element = wait.until(
         ExpectedConditions.visibilityOfElementLocated(By.id("someid"))); 
    

    Надеется, что это решит вашу проблему

    +0

    благодарю вас за ответ, но после того, как я добавлю Implicit Wait, я получил ошибку: _Exception в потоке «main» org.openqa.selenium.TimeoutException: Сроки после 10 секунд ожидания видимости элемента, расположенного By.xpath:// div [@ class = 'input-wrapper icon wupid'] _ это не решит проблему – Amir

    +0

    Сначала проверьте, действительно ли xpath действителен или нет, вы можете проверить в Firefox. – rajan

    +0

    Чтобы получить стабильность в своей структуре, вы должны использовать явное ожидание. – rajan

    0

    Учитывая ваш HTML-код, есть текстовое поле только в входном теге. Таким образом, вы можете использовать этот xpath: // input [@ class = 'only-numbers ltr'] "и использовать явное ожидание.

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