You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

使用Splinter的browser.fill()触发TypeError:fill()仅接受2个位置参数却传入3个的问题解决咨询

解决Splinter fill()方法参数错误及含点号输入框填充问题

你遇到的TypeError其实是个简单的用法问题,跟输入框名称里的点号没关系——咱们先把这个误区澄清,再看怎么修正代码。

错误原因:fill()方法的参数使用错误

Splinter的fill()方法只需要接收要填充的文本内容这一个参数,你不需要把元素的name属性值再传一遍。你写的这行代码:

browser.find_by_name('searchArgs.leaseNumberArg').fill('searchArgs.leaseNumberArg', '160895')

多传了一个'searchArgs.leaseNumberArg'参数,这才导致了“需要2个参数但传了3个”的错误(这里的3个参数是:元素对象本身、你额外传的name值、目标填充文本)。

修正后的正确代码

不管输入框的name属性里有没有点号,找到元素后直接调用fill()传文本值就可以了:

from splinter import Browser
from bs4 import BeautifulSoup as bs
from webdriver_manager.chrome import ChromeDriverManager
from selenium import webdriver

executable_path = {'executable_path':ChromeDriverManager().install()}
browser = Browser('chrome', **executable_path, headless = False)
browser.visit('http://webapps2.rrc.state.tx.us/EWA/wellboreQueryAction.do')
# 修正后的fill调用:只传要填充的文本
browser.find_by_name('searchArgs.leaseNumberArg').fill('160895')

关于名称含点号的补充说明

你担心的name属性里的点号其实不会影响find_by_name()的工作——Splinter会直接把整个字符串作为name属性的匹配值,不会把点号当成数据结构的分隔符。之前你用类似“成功填充其他输入框”的语法,可能是混淆了其他方法(比如Selenium原生的send_keys()?或者记错了Splinter的用法),但Splinter的fill()确实只需要传入文本值。

内容的提问来源于stack exchange,提问作者Charlie Willmore

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 23:07:30