使用Selenium Python绑定读取div中的隐藏值

时间:2013-08-29 00:59:49

标签: python selenium webdriver selenium-webdriver

问题:如何读取嵌套<div>中的值?

情况:我正在测试我们网站上的注册。为了完成该过程,用户将需要输入验证码。使用帮助程序类(在我们的开发服务器上),我们可以显示(隐藏)当前的验证码。我需要抓住它并保存它以供.send_keys函数使用(该部分是简单的部分)。我没有代码与我正在使用的东西分享,因为我甚至不确定在哪里跳。

嗯,我有这个,但这显然不是答案:

driver.find_element_by_id("capchta").send_keys("foobar")

上面,我可以发送一个键值(看作“foobar”)。我只需要用value=XXX

中读到的字符串替换“foobar”

以下是带有验证码的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>

2 个答案:

答案 0 :(得分:5)

我认为你不需要执行JS来获取隐藏的输入值。

您可以将get_attribute用于值属性

  

get_attribute(name)

所以在你的情况下,试试:

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的完全有效和可接受的方式。