Can't use element ID as locator with the By implementation?

Python Bindings with Appium 1.3.4

I’m trying to use a WebDriverWait by holding for a “Complete” string to appear in the ‘value’ attribute of the element. The element name changes once complete, so I can’t use By.NAME to locate the element.

When using the By.ID locator, the script throws a TimeOutException waiting on the value to change to ‘Complete’. After inspection of the Appium logs, it looks like the value is never fetched.

Here is the code:

Calling Function:

wait_for_element_value(driver,, 'Complete', 20)

WebDriverWait Function:

def wait_for_element_value(driver, element_id, text, wait_time=5):
return WebDriverWait(driver, wait_time).until(
    EC.text_to_be_present_in_element_value((By.ID, element_id)), text)

Appium Log Snippet:

2015-03-04 16:42:35:779 - info: [debug] Socket data received (25 bytes)
2015-03-04 16:42:35:780 - info: [debug] Socket data being routed.
2015-03-04 16:42:35:780 - info: [debug] Got result from instruments: {"status":0,"value":""}
2015-03-04 16:42:35:780 - info: [debug] Condition unmet after 821ms. Timing out.
2015-03-04 16:42:35:780 - info: [debug] Responding to client with error: {"status":7,"value":{"message":"An element could not be located on the page using the given search parameters.","origValue":""},"sessionId":"6352249b-fca1-4094-8b7a-3a99b7d8a8b7"}
2015-03-04 16:42:35:781 - info: <-- POST /wd/hub/session/6352249b-fca1-4094-8b7a-3a99b7d8a8b7/element 500 822.317 ms - 179 

It looks like the element is never found by the ID?

I’m pretty sure I’m implementing the By.ID method incorrectly, can anyone shed some light on this for me?