当前位置: 首页 > 面试题库 >

使用机械化提交不带控件名称的表格

江瀚昂
2023-03-14
问题内容

我正在尝试使用机械化的python提交表单,但是我需要填写的表单控件没有分配名称。

<POST https://sample.com/anExample multipart/form-data
  <HiddenControl(post_authenticity_token=) (readonly)>
  <HiddenControl(iframe_callback=) (readonly)>
  <TextareaControl(<None>=)>>

我要编辑的控件是上述对象中的最后一个控件<TextareaControl(<None>=)>

我看了看文档,似乎找不到为该控件分配值的方法,因为它没有与之关联的名称。

  forms = [f for f in br.forms()]
  print forms[2].controls[5].name

输出“无”


问题答案:

因此,我将授予您,这一点很难弄清楚。不得不从字面上看一下mechanize代码本身来弄清楚。不幸的是,我无法在没有name属性的实际表单项上进行确定的测试,尽管如果您提供要拉取的站点,也可以自己进行测试,但是我可以这样做。

老实说,表单对象的可用性不是很好。对于您来说,编辑无名表单控件的值的唯一方法是使用 表单
set_valuemethod:

class HTMLForm:

    # <...>

    set_value(value,
          name=None, type=None, kind=None, id=None, nr=None,
          by_label=False,  # by_label is deprecated
          label=None)

因此,您要在此处设置所需控件的方法是使用nr参数来获取它,并使用表单中控件的索引。不幸的是,您不能使用负整数从后面获取控件,因此要获取最后一种形式,您必须按照进行操作nr=len(myform.controls)-1

无论如何,您可以在此处使用该set_value方法,然后按如下所示进行设置:

forms[2].set_value("LOOK!!!! I SET THE VALUE OF THIS UNNAMED CONTROL!", 
                       nr=5)

那应该为您工作。让我知道事情的后续。



 类似资料:
  • 问题内容: 我正在尝试使用机械化提交表单,但遇到了错误(TypeError:ListControl,必须设置顺序)。在谷歌搜索了一段时间并尝试了几种不同的解决方案后,我无法解决该问题。我正在尝试提交所有字段。 通过机械化获取的表单数据(对于br.forms()打印中的f:f) 我当前的代码 请您协助并检查我是否为表单选项使用了正确的语法。谢谢 问题答案: 栏位会要求您提供整数清单,但您只提供一个整

  • 问题内容: 我想知道是否有类似Java的Perl / Python机械化的东西。 谢谢! 问题答案: 看看HtmlUnit。它类似于Perl的WWW :: Mechanize 。还有一个Perl版本,名为WWW :: HtmlUnit (它使用Inline :: Java 将Java库的方法公开给Perl)。

  • 问题内容: 我正在尝试使用Python填写并提交表单,但无法检索结果页面。我已经尝试过机械化和urllib / urllib2方法来发布表单,但是都遇到了问题。 我要检索的表单在这里:http: //zrs.leidenuniv.nl/ul/start.php。该页面以荷兰语显示,但这与我的问题无关。可能值得注意的是,表单操作重定向到http://zrs.leidenuniv.nl/ul/quer

  • 问题内容: 我有以下代码尝试使用进行一些验证样式。 我的课程尚未申请,我看不到原因。生成的html符合预期,其名称与表达式中的对应名称匹配。 当我将其复制到(不用于命名)之外时,它可以按预期工作。 问题答案: 发生这种情况的原因是,控件的名称(在其父窗体上注册该控件的名称)是在的实例化过程中检索到的, 根据文档 ,该名称发生在预链接阶段*之前(因此尚无内插法)。 如果您检查的属性,就会发现它确实具

  • 问题内容: 我的网站上有一个严重的问题。在Google Chrome浏览器中,某些客户无法进入我的付款页面。尝试提交表单时出现此错误: 这来自JavaScript控制台。 我读到问题可能是由于隐藏字段具有必填属性。现在的问题是,我们使用的是.net Webforms必需的字段验证器,而不是html5必需的属性。 出现此错误的似乎是随机的。有谁知道解决方案吗? 问题答案: 如果表单字段验证失败,则在

  • 问题内容: 我对python机械化的代理支持有疑问。我正在制作一些Web客户端脚本,我想在我的脚本中插入代理支持功能。 例如,如果我有: 如何在我的机械化脚本中添加代理支持?每当我打开此网站时,我都希望它通过代理。 问题答案: 您使用mechanize.Request.set_proxy(host,type)(至少从0.1.11开始) 假设运行在localhost:8888的http代理 应该管用