TypeError:必须是str,而不是int在python 3

问题描述:

我试图在网站表单中提交一些电子邮件。我用硒与Python 3TypeError:必须是str,而不是int在python 3

这里是我的代码:

import os 
import time 
import getpass 
from selenium import webdriver 
from selenium.webdriver.common.keys import Keys 

while True: 
    chromedriver = 'F:\All Folders\chromedriver\chrome.exe' 

#Uncomment this block if you don't want images to load(makes the procss a little bit faster) 
    ''' 
    chromeOptions = webdriver.ChromeOptions() 
    prefs = {"profile.managed_default_content_settings.images":2} 
    chromeOptions.add_experimental_option("prefs",prefs) 
    browser = webdriver.Chrome(chromedriver, chrome_options=chromeOptions) 
    ''' 

    browser = webdriver.Chrome(chromedriver) 
    browser.get("http://www.website.com")  # website's home page 
    time.sleep(10) 

    # Logging into website 
    form = browser.find_element_by_class_name('regular_login') 
    email = form.find_element_by_name("email") 
    password = form.find_element_by_name("password") 
    button_element = browser.find_element_by_xpath("//*[@value='Login']") 

    #List of emails 
    email_list = ['[email protected]', '[email protected]', '[email protected]'] 
    for emails, emails in enumerate(email_list): 
     email.send_keys(emails) 
     emails = emails + 1 
     print("success") 

我的计划是使用while循环提交每封电子邮件中的每个浏览器会话。但是这行'emails = emails + 1'返回错误。

下面是引用:

F:\Python_Installer\python.exe C:/Users/user/PycharmProjects/Quora_Bot/westing.py 

Traceback (most recent call last): 
    File "C:/Users/user/PycharmProjects/Quora_Bot/westing.py", line 39, in <module> 
    emails = emails + 1 
TypeError: must be str, not int 

Process finished with exit code 1 

我不知道。有人可以善意解释我。

我相信这个问题是来自

for emails, emails in enumerate(email_list): 
    emails = emails + 1 

首先,但这不是什么引起的错误,或者使用for i, emails in enumerate(email_list)并做i柜台的东西,或者干脆用for emails in email_list如果你只需要的内容列表。

其次,删除emails = emails + 1:在这一步,你尝试添加1(整数),以emails(串),这将导致错误,并且似乎任何没有任何用处,因为非常下一步你的循环将重新分配一个值为emails,因为它是你的迭代器。

所以,如果你想要做的是遍历你的邮件列表,以便通过一个送他们一个,只是做:

for email_adress in email_list: 
    email.send_keys(email_adress) 

我希望这有助于。

后Scriptum

原样,你的代码将运行一个无限循环,这是你不想要的东西。在使用break语句时运行一个无限循环的情况是非常有用的,但您似乎在这里没有任何东西;此外,由于您似乎试图迭代会话,因此您只需嵌套for循环。

+0

首先非常感谢@Archeo的详细解答。 (email_list): email.send_keys(email_adress)'没有工作并发送 'Traceback(最近一次调用最后一个): 文件“C:/ Users/user/PycharmProjects/Quora_Bot/westing。 py“,第30行,在 email.send_keys(email_adress) 文件”C:\ Users \ user \ AppData \ Roaming \ Python \ Python36 \ site-packages \ selenium \ webdriver \ remote \ webelement.py“,第348行,在send_keys {'text':“”.join(keys_to_typing(value)), TypeError:序列项目0:预期的str实例,发现int' –

+0

然后我尝试: '为我,列举的电子邮件(email_list) :email.send_keys(email_adress)' –

+0

他们俩都不窝rks –