首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Python与Selenium Gmail电子邮件自动发送到: Field给我带来了麻烦

Python与Selenium Gmail电子邮件自动发送到: Field给我带来了麻烦
EN

Stack Overflow用户
提问于 2018-08-09 05:44:56
回答 3查看 1.6K关注 0票数 0

最终目标是如果我的公共ip地址发生变化,给自己发送一封电子邮件,因为我没有动态dns,必须自己手动输入我的web服务器的ip地址。我已经尽我所能地尝试让bash实用程序为我做这项工作,但不幸的是,无论我如何配置我的出站邮件,CenturyLink都会阻止我。

所以我转向了图形python/selenium网页自动化,它会帮我登录到我的gmail账户,点击‘撰写’按钮,然后输入收件人:,主题:,文本段并点击发送。除了To:字段这一小部分之外,一切都在运行。在这一点上,html/css与所有其他的都是不同的,无论我如何尝试使用

代码语言:javascript
复制
driver.find_element_by_class_name()

代码语言:javascript
复制
driver.find_element_by_id()

我就是不能填写这一栏。Bash会给我一个错误,比如

代码语言:javascript
复制
:lo cannot be reached by keyboard 

或者textarea#:lo.vO不是有效的选择器

当我做一个inspect元素时,这个元素看起来像这样:

代码语言:javascript
复制
<textarea rows="1" id=":lo" class="vO" name="to" spellcheck="false" autocomplete="false" autocapitalize="off" autocorrect="off" tabindex="1" dir="ltr" aria-label="To" role="combobox" aria-autocomplete="list" style="width: 462px;"></textarea>

到目前为止,我的代码是这样的:(注意:这还不包括获取ip信息,只是gmail登录/操作)

代码语言:javascript
复制
from selenium import webdriver
import time

driver = webdriver.Firefox();
driver.get('https://www.gmail.com');
username = driver.find_element_by_id('identifierId');
username.send_keys("EMAIL");
driver.find_elements_by_class_name('RveJvd.snByac')[1].click();
time.sleep(2); #password not entered in username field
password = driver.find_element_by_class_name('whsOnd.zHQkBf');
password.send_keys("PASSWORD");
driver.find_elements_by_class_name('RveJvd.snByac')[0].click();

#end login, start composing

time.sleep(5); #wait for sign in
driver.find_element_by_class_name('T-I.J-J5-Ji.T-I-KE.L3').click();
to = driver.find_element_by_class_name('textarea#:lo.vO'); #incorrect
to.send_keys("EMAIL");
subject = driver.find_element_by_id(':l6');
subject.send_keys("IP Address changed");
content = driver.find_element_by_id(':m9');
content.send_keys("Test Test\n");
EN

回答 3

Stack Overflow用户

发布于 2018-08-09 05:56:07

你有没有尝试过使用Gmail API?它比使用Selenium更容易、更快速、更高效。

这里是快速入门:https://developers.google.com/gmail/api/quickstart/python

(我正在写一个答案,因为我没有名气来评论)

票数 1
EN

Stack Overflow用户

发布于 2018-08-09 06:16:10

您还可以使用Python的内置电子邮件包:

https://docs.python.org/3/library/email.examples.html

票数 1
EN

Stack Overflow用户

发布于 2020-12-19 02:39:53

尝试使用此代码使用Gmail发送电子邮件。它必须具有To、Subject和Send按钮功能:

driver.find_element(By.XPATH,'//*@id=":k2"/div/div').click()#组成按钮time.sleep(5)

撰写time.sleep(2)中的driver.find_element(By.NAME,‘to’).send_keys(“输入收件人的电子邮件地址”)#to字段

driver.find_element(By.NAME,‘subjectbox’).send_keys(“此电子邮件使用selenium发送”)# compose time.sleep(2)中的Subject字段

driver.find_element(By.XPATH,'//*@id=":p3"').click()#点击发送按钮

time.sleep(5)

driver.close()

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51756066

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档