1

I am trying to locate a text box to enter a text in it but couldn't because of the error 'no such element: Unable to locate element'

Here is the HTML of the page:

<form id="aaaSub" name="aaaSub" method="post" action="/ProvGwAaaGui/faces/jsp/dspAAABySearch.jsp" enctype="application/x-www-form-urlencoded">
<input type="hidden" name="aaaSub" value="aaaSub" />
<table id="aaaSub:msg1" style="height:30px; margin-left:20px;">
<tbody>
<tr>
<td></td>
</tr>
</tbody>
</table>
<table id="aaaSub:heading" style="height:60px; margin-left:20px;">
<tbody>
<tr>
<td><table class="ad_wa_title_bold">
<tbody>
<tr>
<td>Display Single Umc AAA Subscriber</td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table class="ad_wa_table" border="1" style="margin-left:20px;">
<tbody>
<tr>
<td><table class="ad_wa_body" style="margin:10px 10px 10px 10px;">
<tbody>
<tr>
<td><table style="width:300px;">
<tbody>
<tr>
<td><span id="aaaSub:j_id_jsp_2095096634_11" class="ad_wa_body">Identifier</span></td>
</tr>
</tbody>
</table>
</td>
<td><input id="aaaSub:identifier" name="aaaSub:identifier" type="text" value="" maxlength="32" size="30" onkeyup="disableOtherLink('aaaSub:identifier')" onchange="disableOtherLink('aaaSub:identifier')" /></td>
</tr>
<tr>
<td><table style="width:300px;">
<tbody>
<tr>
<td><span id="aaaSub:j_id_jsp_2095096634_15" class="ad_wa_body">cn alias</span></td>
</tr>
</tbody>
</table>
</td>
<td><input id="aaaSub:cn" name="aaaSub:cn" type="text" value="" maxlength="32" size="30" onkeyup="disableOtherLink('aaaSub:cn')" onchange="disableOtherLink('aaaSub:cn')" /></td>
</tr>
</tbody>
</table>
</td>
</tr>
</tbody>
</table>
<table id="aaaSub:empty" style="height:130px; margin-left:20px;">
<tbody>
<tr>
<td><span id="aaaSub:j_id_jsp_2095096634_18"> </span></td>
</tr>
</tbody>
</table>
<table id="aaaSub:buttons" class="ad_wa_body" style="width:200px;margin-left:20px;">
<tbody>
<tr>
<td><input type="submit" name="aaaSub:j_id_jsp_2095096634_20" value="Display" style="height:25px;margin-left:5px;width:100px" onclick="return(mandatoryGeneralCheck())" /></td>
</tr>
</tbody>
</table>
<input type="hidden" name="javax.faces.ViewState" id="javax.faces.ViewState" value="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" autocomplete="off" />
</form>
    </div>
</body>
</html>

The requested box is here:

<td><input id="aaaSub:identifier" name="aaaSub:identifier" type="text" value="" maxlength="32" size="30" onkeyup="disableOtherLink('aaaSub:identifier')" onchange="disableOtherLink('aaaSub:identifier')" /></td>

I tried the following code

web.implicitly_wait(30)
web.find_element(By.XPATH,'//*[@id="aaaSub:identifier"]').send_keys('text')
undetected Selenium
  • 183,867
  • 41
  • 278
  • 352

2 Answers2

0

You were using invalid xpath locator. Please use //input[@id="aaaSub:identifier"]

Sammar Ahmad
  • 236
  • 5
  • 16
0

The desired element is a dynamic element, so ideally to send a character sequence to the element you need to induce WebDriverWait for the element_to_be_clickable() and you can use either of the following locator strategies:

  • Using CSS_SELECTOR:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "input[id='aaaSub:identifier'][name='aaaSub:identifier'][onchange*='aaaSub:identifier']"))).send_keys("text")
    
  • Using XPATH:

    WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//input[@id='aaaSub:identifier' and @name='aaaSub:identifier'][contains(@onchange, 'aaaSub:identifier')]"))).send_keys("text")
    
  • Note: You have to add the following imports :

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    

References

You can find a couple of relevant discussions on NoSuchElementException in:

undetected Selenium
  • 183,867
  • 41
  • 278
  • 352
  • The xpath had worked well with me and give me the text in the text box but then it returned error "selenium.common.exceptions.TimeoutException" even after changing wait time from 20 to 30 or decrease it to 10. The code stops at that point and dont continue "Process finished with exit code 1" – Ahmed Tantawy Mar 03 '22 at 22:23