4

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

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

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

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

有了上面,我可以发送一个键值(被视为“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>
4

2 回答 2

7

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

您可以使用get_attribute到 value 属性

获取属性(名称)

因此,在您的情况下,请尝试:

captcha_value = driver.find_element_by_id("current_captcha").get_attribute("value")
driver.find_element_by_id("capchta").send_keys(captcha_value)
于 2013-08-29T01:24:37.073 回答
1

正如这里所解释的, Selenium 不能与隐藏元素交互。您将需要执行 javascript 来更改您的值;这仍然是使用 Selenium 的一种完全有效且被接受的方式。

于 2013-08-29T01:07:40.287 回答