Селен вводит 9.888888888E9 в качестве номера телефона после получения его из Excel

#java #selenium

Вопрос:

У меня есть имя, номер, адрес электронной почты и т.д. в моем Excel, который я извлекаю, используя приведенный ниже код

Номер телефона в Excel — 9888888888

 v=wb.getSheet(sheet).getRow(r).getCell(c).toString();
 

но когда я запускаю свой скрипт для ввода данных, selenium вводит 9.888888888E9.
Я попытался отформатировать ячейку в Excel в «Текст», «Число», но это не сработало.
Как мне заставить его ввести номер, который есть в Excel?

Комментарии:

1. DataFormatter может вам помочь,

2. @Newtoselenium какой метод в принятом ответе сработал для вас. Если вы попробовали 2 для числового значения, было ли у if / else какое-либо отставание, возможно, миллисекунды, но полезно знать

3. если (wb.getSheet(лист).GetRow(r).getCell(c).getCellType() == Cell.CELL_TYPE_NUMERIC) { v = NumberToTextConverter.toText(wb.getSheet(лист).GetRow(r).getCell(c).getNumericCellValue()); } иначе, если(wb.getSheet(лист).GetRow(r).getCell(c).getCellType() == Cell.CELL_TYPE_STRING) { v = wb.getSheet(лист).GetRow(r).getCell(c).getStringCellValue(); } это сработало

Ответ №1:

У sendKeys() Seleniun нет никакой функции для преобразования текста. Он просто передает значения в пункт назначения. Вам необходимо изменить метод получения значения из Excel. Пожалуйста, попробуйте приведенные ниже возможные решения,

 v=wb.getSheet(sheet).getRow(r).getCell(c).getStringCellValue();
 

или

 v=wb.getSheet(sheet).getRow(r).getCell(c).getRawValue();
 

или

 if (wb.getSheet(sheet).getRow(r).getCell(c).getCellType() == Cell.CELL_TYPE_NUMERIC) {
    v = NumberToTextConverter.toText(wb.getSheet(sheet).getRow(r).getCell(c).getNumericCellValue());
} else if (wb.getSheet(sheet).getRow(r).getCell(c).getCellType() == Cell.CELL_TYPE_STRING) {
    v = wb.getSheet(sheet).getRow(r).getCell(c).getStringCellValue();
}