Python Selenium将键发送到文本字段
我在写一个谷歌表单提交者,我在文本字段类型的问题上遇到了问题。 基本上我使用的是:Python Selenium将键发送到文本字段,python,selenium,webdriver,screen-scraping,Python,Selenium,Webdriver,Screen Scraping,我在写一个谷歌表单提交者,我在文本字段类型的问题上遇到了问题。 基本上我使用的是: textfield = question.find_element_by_class_name("quantumWizTextinputPaperinputInput") 找到文本字段,然后问题开始出现。“文本字段”的类型是: 当我想调用.send\u keys(string)时,它会说发生了异常:AttributeError'list'对象没有属性“send\u keys” 所以基本上它说
textfield = question.find_element_by_class_name("quantumWizTextinputPaperinputInput")
找到文本字段,然后问题开始出现。“文本字段”的类型是:
当我想调用.send\u keys(string)
时,它会说发生了异常:AttributeError'list'对象没有属性“send\u keys”
所以基本上它说返回的元素是一个列表(noenetheless that type()返回一个firefoxwebdriver元素类型)。
因此,如果我尝试使用textfield[0]或textfield[1]等…
它当然会抛出一个错误,即FirefoxWebDriver不可订阅。
怎么回事?
下面是代码块:
buttons = question.find_elements_by_class_name("appsMaterialWizToggleRadiogroupRadioButtonContainer")
buttons2 = question.find_elements_by_class_name("quantumWizTogglePapercheckboxInnerBox")
try:
textfield = question.find_element_by_class_name("quantumWizTextinputPaperinputInput")
except:
print("not found")
textfield = []
pass
然后在下面向其发送密钥:
if len(buttons) == 0 and len(buttons2) == 0:
print(textfield)
textfield.send_keys("lol spam")
问题就在这段代码中。如果找不到textfield
,或者更具体地说,找不到类名quantumwiztemputPaperInput
,Python将继续计算块以外的。您在其中声明了textfield=[]
——这就是您出现问题的原因:
发生异常:AttributeError“list”对象没有属性
“send_keys”基本上表示返回的元素是一个列表
(noenetheless that type()返回firefoxwebdriver元素类型)。所以
如果我尝试使用文本字段[0]或文本字段[1]等。。。当然了
抛出FirefoxWebDriver不可订阅的错误
- 您不能向列表发送
send_key
- 列表为空,因此
文本字段[0]
应该抛出索引器
解决此问题的方法是找到合适的类名
。如果没有HTML代码,我们无法帮助您做到这一点
问题就在这段代码中。如果找不到textfield
,或者更具体地说,找不到类名quantumwiztemputPaperInput
,Python将继续计算块以外的。您在其中声明了textfield=[]
——这就是您出现问题的原因:
发生异常:AttributeError“list”对象没有属性
“send_keys”基本上表示返回的元素是一个列表
(noenetheless that type()返回firefoxwebdriver元素类型)。所以
如果我尝试使用文本字段[0]或文本字段[1]等。。。当然了
抛出FirefoxWebDriver不可订阅的错误
- 您不能向列表发送
send_key
- 列表为空,因此
文本字段[0]
应该抛出索引器
解决此问题的方法是找到合适的类名
。如果没有HTML代码,我们无法帮助您做到这一点。Hello Marsin,您能否提供一个较小的代码片段,包括您要提交的页面?我知道这很麻烦,但目前无法调试您的问题。另外,您是否在使用IDE,如VSCode或PyCharm?这将允许您通过各自的调试器在断点处内省对象。嗨!我更新了原来的帖子。很抱歉开始给出调试的指针:如果您将if len(按钮)…
移动到try:…
部分,它应该可以工作。让它打印出你想要的,你应该是金色的。我所看到的唯一一件事是,可能会遇到您描述的错误,因为存在广泛的except
子句。如果find\u element\u by\u class\u name
失败,则打印出“not found”,然后将空列表分配给textfield
。随后,您使用textfield
,它现在可能是一个空列表(但是,根据您遇到的异常情况,强烈建议),执行对send\u keys
的调用。是否有可能在异常之前打印出消息“not found”(未找到)?您好,Marsin,能否提供一个较小的代码段,包括您要提交到的页面?我知道这很麻烦,但目前无法调试您的问题。另外,您是否在使用IDE,如VSCode或PyCharm?这将允许您通过各自的调试器在断点处内省对象。嗨!我更新了原来的帖子。很抱歉开始给出调试的指针:如果您将if len(按钮)…
移动到try:…
部分,它应该可以工作。让它打印出你想要的,你应该是金色的。我所看到的唯一一件事是,可能会遇到您描述的错误,因为存在广泛的except
子句。如果find\u element\u by\u class\u name
失败,则打印出“not found”,然后将空列表分配给textfield
。随后,您使用textfield
,它现在可能是一个空列表(但是,根据您遇到的异常情况,强烈建议),执行对send\u keys
的调用。是否有可能在异常之前打印出消息“未找到”?
try:
textfield = question.find_element_by_class_name("quantumWizTextinputPaperinputInput")
except:
print("not found")
textfield = []
pass