【问题标题】:Read a hidden value in a div using Selenium Python binding使用 Selenium Python 绑定读取 div 中的隐藏值
【发布时间】:2013-08-30 08:20:45
【问题描述】:

问题:如何读取嵌套<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>

【问题讨论】:

  • 你只是想改变隐藏输入的值吗?
  • 没有。就读吧。所以我可以使用它。 (见下文)

标签: python selenium webdriver selenium-webdriver


【解决方案1】:

我认为你不需要执行 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)

【讨论】:

    【解决方案2】:

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

    【讨论】:

    • 它声明,“Selenium WebDriver 不能与隐藏元素交互,它只能找到它们”我不想与之交互。只要找到它。如果我能找到value=XXXX,那么我可以将它捕获到一个字符串和.send_keys(XXXX),这正是我想要的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-30
    • 2020-01-29
    • 2018-09-22
    • 1970-01-01
    • 2021-12-26
    相关资源
    最近更新 更多