问题:如何读取嵌套<div>
中的值?
情况:我正在测试我们网站上的注册。为了完成该过程,用户将需要输入验证码。使用帮助程序类(在我们的开发服务器上),我们可以显示(隐藏)当前的验证码。我需要抓住它并保存它以供.send_keys函数使用(该部分是简单的部分)。我没有代码与我正在使用的东西分享,因为我甚至不确定在哪里跳。
嗯,我有这个,但这显然不是答案:
driver.find_element_by_id("capchta").send_keys("foobar")
上面,我可以发送一个键值(看作“foobar”)。我只需要用value=XXX
以下是带有验证码的HTML代码,用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>
答案 0 :(得分:5)
我认为你不需要执行JS来获取隐藏的输入值。
您可以将get_attribute
用于值属性
所以在你的情况下,试试:
captcha_value = driver.find_element_by_id("current_captcha").get_attribute("value")
driver.find_element_by_id("capchta").send_keys(captcha_value)
答案 1 :(得分:0)
正如所解释的那样here Selenium无法与隐藏元素进行交互。您将需要执行javascript来为您更改值;这仍然是使用Selenium的完全有效和可接受的方式。