Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/287.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Selenium将键发送到文本字段_Python_Selenium_Webdriver_Screen Scraping - Fatal编程技术网

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