Issue: How can you read a value in a nested <div>
?
Situation: I am testing the registration on our web site. In order to complete the process, the user will need to enter the captcha. Using a helper class (on our dev server) we can display (hidden) the current captcha. I need to grab that and save it to be used by a .send_keys function (that part is the easy part). I have no code to share with what I am using, as I am not even sure where to jump in.
Well, I have this, but this is obviously not the answer:
driver.find_element_by_id("capchta").send_keys("foobar")
With above, I can send a key value (seen as "foobar"). I just need to replace "foobar" with a string that I read in the value=XXX
Here is the HTML code with the captcha, represented with the value=XXXX
.
<div id="code_area">
<p id="captcha_blurb">Please enter the security code below</p>
<div id="capchta_area">
<img id="secuity_icon" src="/img3/Secuity-Icon.png">
<img id="security-image" src="data:image/png;==">
<input id="current_captcha" type="hidden" value="XXXX">
<input id="capchta" class="reg_form_input" value="" name="code" placeholder="Enter Security Code" title=" Please Enter These Characters." onblur="removeInputInfoBox('reg_box');" onfocus="addInputInfoBox('#capchta','#capchta_area', 'reg_box');">
</div>
I don't think you need to execute JS to get the hidden input's value.
You can use get_attribute
to the value attribute
get_attribute(name)
So in your case, try:
captcha_value = driver.find_element_by_id("current_captcha").get_attribute("value")
driver.find_element_by_id("capchta").send_keys(captcha_value)
As explained here Selenium can't interact with hidden elements. You're going to need to execute javascript to change the value for you; which is still a perfectly valid and accepted way of using Selenium.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With