In selenium if the value is stored as innerText, you have to retrive it using .text method , this works only if the element is visible in the UI. Means if its hidden or out of view port .text method will return blank. In that case you could use get attribute "textContent" . But for testing textCOntent is not recommended as it won't validate if the text is displaye in UI. It is recommended only for web scraping
You can also wait for value field to have the text before printing you are indeed looking for value attribute
from selenium.webdriver.support import expected_conditions as EC
wait = WebDriverWait(driver, 10)
caller = wait.until(EC.text_to_be_present_in_element_value((By.ID, 'sys_display.new_call.caller'),"MyMercy User"))
caller = driver.find_element_by_id("sys_display.new_call.caller")
print(caller.get_attribute('value'))
print(caller.text)
print(caller.get_attribute('textContent'))
Try printing the three values and see which one gives the result you want