gpt4 book ai didi

python - Mechanize 提交

转载 作者:行者123 更新时间:2023-11-28 16:53:11 26 4
gpt4 key购买 nike

我们有一个表单,其中有几个单独的提交按钮,它们执行不同的操作。问题是我有几个具有以下 HTML 的按钮:

<input type="submit" name="submit" value="Submit" class="submitLink" title="Submit" />
<input type="submit" name="submit" value="Delete" class="submitLink" title="Delete" />

现在您无法使用标准的 find_control 函数按值定位元素。所以我写了一个谓词函数来找到我的元素,然后我希望通过以下方式点击它:

submit_button = self.br.form.find_control(predicate=submit_button_finder)
self.br.submit(submit_button)

但是 submit 和 click 都在内部调用 find 元素,并且这两种方法都不允许您添加 predicate 关键字,所以这样的调用也不起作用:

self.br.submit(predicate=submit_button_finder)

有什么我想念的吗?!?

更新:

添加了一个辅助函数来检索所有符合条件的元素:

def find_controls(self, name=None, type=None, kind=None, id=None, predicate=None, label=None):

i = 0
results = []

try :
while(True):
results.append(self.browswer.find_control(name, type, kind, id, predicate, label, nr=i))
i += 1
except Exception as e: #Exception tossed if control not found
pass
return results

然后替换了下面几行:

submit_button = self.br.form.find_control(predicate=submit_button_finder)
self.br.submit(submit_button)

与:

submit_button = self.br.form.find_control(predicate=submit_button_finder)
submit_buttons = self.find_controls(type="submit")
for button in submit_buttons[:]:
if (button != submit_button) : self.br.form.controls.remove(button)
self.br.submit()

最佳答案

一个相当贫民窟的解决方法是手动循环访问相关表单中的所有控件,然后根据条件从表单中删除不需要的控件。例如:

for each in form.controls[:]:
if each not "some criteria":
form.controls.remove(each)

此处最好的想法是将您要迭代的控件仅限于 SubmitControl 对象。这样,您会将表单限制为一个提交按钮,而 browser.submit() 方法将无法选择要单击的内容。

关于python - Mechanize 提交,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4503141/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com