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

时间:2017-07-03 11:49:45

标签: python-3.x selenium selenium-chromedriver

我试图以网站形式提交一些电子邮件。我使用selenium和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 = ['na23b9@gmail.com', '25g65b@gmail.si', 'gfdebfk@gmail.jp']
    for emails, emails in enumerate(email_list):
      email.send_keys(emails)
      emails = emails + 1
      print("success")

我的计划是使用while循环在每个浏览器会话中提交每封电子邮件。但这一行'电子邮件=电子邮件+ 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

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

1 个答案:

答案 0 :(得分:0)

我认为问题来自

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循环。