1

我正在尝试将<select>框的值从 10 更改为 500。这是 HTML:

    <select id="count" name="count">
    	<option value="10">10</option>
    	<option value="20">20</option>
    	<option value="50">50</option>
    	<option value="100">100</option>
    </select>

表单中没有'500'列出选项,但如果您更改浏览器中的 HTML,Web 服务器将接受它。

我在 Python 中的代码不起作用:

browser = RoboBrowser()
browser.open(link)

form = browser.get_form(action=re.compile(r'loginshop'))
form['login'] = '/shop//loginshop.php'
form['user'] = username
form['pw'] = passwort
browser.submit_form(form)
# Search the Website
#Suche = str(input("Suchen Sie nach einem Produkt: "))
formSearch = browser.get_form(action=('liste.php'))
formSearch['suche'].value = self.suche
browser.submit_form(formSearch)

#### ANZEIGEN Artikel max 500
formSortzahl = browser.get_form(id='sort')
formSortzahl['count'].value = '100'

我收到错误:“NoneType”对象不可下标

当我删除它时:它有效。

Sortzahl = browser.get_form(id='count')
formSortzahl['count'].value = '100'

4

1 回答 1

0

您可以简单地通过设置.value属性来设置任何选择框的值:

formSortzahl = browser.get_form(id='sort')
formSortzahl['count'].value = '100'

请注意,您需要使用字符串;该值根据<option> value属性和标签(标签中包含的文本)进行验证。对于您的示例,<option>这意味着该值必须是'10''20'或.'50''100'

您不能轻易地覆盖 HTML 提供的选项,而不是与表单的内部表示进行混淆。我不建议你这样做。

如果您真的必须,请考虑以下代码依赖于当前版本的 robobrowser。它访问MultiOptionField.options属性以向选择添加额外的“选项”:

formSortzahl['count'].options.append('500')  # include one more option
formSortzahl['count'].value = '500'

该属性没有记录,因此项目的开发人员仍然可以选择更改它或更改该属性的行为。

于 2015-03-20T13:29:17.457 回答