【问题标题】:python selenium sending keys to readonly text boxpython selenium 将键发送到只读文本框
【发布时间】:2018-04-11 05:57:30
【问题描述】:

我正在尝试使用下面的 python selenium 代码将密钥发送到下面的字段

<input type="text" name="date_startDateSql" readonly="" class="EditableRequiredField" onfocus="setday(this)">

Selenium Python 代码:

element=driver.find_element_by_name('date_startDateSql') element.send_keys('12/10/2017')

我没有收到任何错误或异常,但无法将密钥发送到此元素。我是 python selenium 的新手,如果有人能建议如何将密钥发送到只读字段,我将不胜感激。

【问题讨论】:

  • 如果它是只读字段,那么您可能无法在此处手动输入文本?如果是,那么通过硒你也不能这样做。你能在那里手动输入文字吗?
  • 不,@Akhtar 我无法手动输入文本。但是当我从 html 页面中删除“只读”时,我可以输入。有没有办法使用 webdriver 删除字段的“只读”属性?

标签: javascript python selenium


【解决方案1】:

在发送密钥之前删除输入的 readonly 属性:

driver.execute_script('document.getElementsByName("date_startDateSql")[0].removeAttribute("readonly")')

【讨论】:

  • 感谢您的快速回复,但我收到以下错误 selenium.common.exceptions.WebDriverException: Message: unknown error: document.getElementByName is not a function (Session info: chrome=62.0.3202.62) (驱动信息:chromedriver=2.27.440174 (e97a722caafc2d3a8b807ee115bfb307f7d2cfd9),platform=Windows NT 6.1.7601 SP1 x86_64)
  • 适应通过元素 id 抓取但效果很好,谢谢! driver.execute_script('document.getElementById("id_name_here").removeAttribute("readonly")')
【解决方案2】:

效果很好!

如果没有多个具有相同 ID 的元素,您可以使用:

driver.execute_script('document.getElementById("ELEMENT ID").removeAttribute("readonly")')

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-07-03
    • 2021-07-03
    • 1970-01-01
    • 2015-02-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多