我试图以网站形式提交一些电子邮件。我使用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
我不知道。有人可以解释我。
答案 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
循环。