Невозможно выполнить действия в раскрывающемся списке, поскольку календарь выскакивает после отправки даты истечения срока действия с помощью sendKeys. - PullRequest
0 голосов
/ 31 мая 2018

В своем коде я написал этот код для ввода даты истечения срока действия SendKeys

driver.findElement(By.cssSelector("#passport-exp-date-input-243202807"))
      .sendKeys("2021-05-13");

, теперь после ввода даты в календаре выскакивает эта дата и из-за этого я не могу выполнитьследующее действие, которое выбирает пол, который является выпадающим.

код для thar ниже:

String locator = "select[id='passport-gender-243202807']" + 
      "[data-sync-to-element='#citizenship-info-view-passport_gender-243202807']"
Select dropdownGender = new Select(driver.findElement(By.cssSelector()));

dropdownGender.selectByVisibleText("Female");

Это дает мне ошибку: «Элемент не виден»

HTML для даты истечения срока действия:

 <input required="" type="text" id="passport-exp-date-input-243202807"
        name="documentExpirationDateInput" 
        class="form-control expirationDate input-sm orange-calendar 
               sync validDateFormat date-picker-selector hasDatepicker"
        data-language="en" data-date-format="yy-mm-dd" 
        data-end-date-of-trip="2018-07-07T00:00:00.000-04:00" 
        data-min-date="0" data-max-date="" 
        data-sync-to-element="#citizenship-info-view-document_expiration-243202807" 
        data-ocr="" value="">

HTML для пола:

<select required="" type="text" name="gender" id="passport-gender-243202807"
        class="form-control input-sm sync" data-ocr=""
        data-sync-to-element="#citizenship-info-view-passport_gender-243202807">
    <option value="">Gender</option>
    <option value="M">Male</option>
    <option value="F">Female</option>
</select>

Скриншот Gender enter image description here

Ответы [ 2 ]

0 голосов
/ 01 июня 2018
// input expiration date
driver.findElement(By.cssSelector("#passport-exp-date-input-243202807"))
      .sendKeys("2021-05-13");

// click any element on page which is not covered by the calendar pop-up
// to make the calendar close, so that it won't cover the Gender element
driver.findElement(<any element no covered by calendar>).click()

// if it's native dropdown,
// click on the dropdown to expand all options
// Generally, for native dropdown, no need to expand options
// we can directly click the option without expand all options.
driver.findElement(By.id("passport-gender-243202807")).click()

// click the wanted option
driver.findElement(By.id("passport-gender-243202807"))
      .findElement(By.xpath("./option[text()='Female']")).click()
0 голосов
/ 01 июня 2018

Я не проверял это, но я уверен, что это должно работать:

Select dropdown = new Select(driver.findElement(By.id("passport-gender-243202807")));
dropdown.selectByVisibleText("Female");

Или, если выбор по тексту не работает, попробуйте выбрать по индексу:

dropdown.selectByIndex(2);

Кроме того, чтобы автоматически вызвать событие щелчка на каком-либо другом видимом элементе, чтобы всплывающий календарь исчез, попробуйте следующее: https://stackoverflow.com/a/11956130/8065825

ОБНОВЛЕНИЕ:

У меня естьтолько что заметил ошибку в вашем раскрывающемся HTML-коде: вы помещаете закрывающий тег </select> перед параметрами раскрывающегося списка, чтобы он не работал.Попробуйте вместо этого:

<select required="" type="text" name="gender" id="passport-gender-243202807" class="form-control input-sm sync" data-sync-to-element="#citizenship-info-view-passport_gender-243202807" data-ocr="">
    <option value="">Gender</option>
    <option value="M">Male</option>
    <option value="F">Female</option>
</select>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...