我正在尝试以网站形式提交一些电子邮件。我将硒与python 3一起使用。
这是我的代码:
import os
import time
import getpass
from selenium import webdriver
from selenium.webdriver.common.keys import Keys
while True:
chromedriver = 'F:All Folderschromedriverchrome.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_Installerpython.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)
我希望这有所帮助。
后记:
照原样,您的代码将运行无限循环,这是您不希望看到的。在某些情况下,在使用break
语句时运行无限循环非常有用,但您似乎在这里没有此类内容;此外,当您似乎在尝试迭代会话时,您所需要的只是嵌套for
循环。