【发布时间】:2020-10-01 22:28:34
【问题描述】:
感谢您的支持,我是 Python 新手。我正在自动执行以下任务:
- 打开 Gmail
- 登录名和密码
- 查找电子邮件
- 点击一封电子邮件(有 8 个不同的邮件,每个邮件都有一个特定的主题)
- 点击链接并下载文件
- 将 .XLSX 转换为 .CSV
- 将 .CSV 上传到 Google 表格
问题/挑战: 我想每天通过虚拟机(AWS EC2 或其他)运行此脚本,但似乎只有在我的 Chromium 窗口处于活动状态时才使用 Selenium 进行上述操作。你知道如果我将相同的内容上传到 EC-2 是否同样适用?
也许另一种选择是通过 Gmail API - 但我无法达到上面列出的相同结果。
这是显示上述内容的部分代码:
# opening gmail
browser = webdriver.Chrome(executable_path='mydriver.exe', chrome_options=chromeOptions)
browser.get('Gmail URL in HTML')
time.sleep(3)
## e-mail and password
email_field = browser.find_element_by_name('identifier')
email_field.send_keys('mye-mail@email.com')
email_field.send_keys(Keys.ENTER)
time.sleep(5)
password_field = browser.find_element_by_name("password")
password_field.send_keys('mypassword')
password_field.send_keys(Keys.ENTER)
time.sleep(5) #Wait for the e-mail screen to open
## finding e-mail 1
finding = browser.find_element_by_xpath('//*[@id="sbq"]')
finding.send_keys('my search query')
finding.send_keys(Keys.ENTER)
time.sleep(3)
## clicking e-mail 1
email = browser.find_element_by_xpath('/html/body/table[2]/tbody/tr/td[2]/table[1]/tbody/tr/td[2]/form/table[2]/tbody/tr[1]/td[3]/a/span')
email.click()
time.sleep(3)
## downloading 1
link = browser.find_element_by_xpath('/html/body/table[2]/tbody/tr/td[2]/table[1]/tbody/tr/td[2]/table[4]/tbody/tr/td/table[1]/tbody/tr[4]/td/div/div/div/div[1]/table/tbody/tr/td/table/tbody/tr/td/table/tbody/tr[4]/td/table/tbody/tr[2]/td/a/b')
link.click()
time.sleep(3)
## changing window 1
browser.switch_to.window(browser.window_handles[0])
time.sleep(1)
## going back again
back = browser.find_element_by_xpath('/html/body/table[2]/tbody/tr/td[2]/table[1]/tbody/tr/td[2]/table[1]/tbody/tr/td[1]/b/a')
back.click()
time.sleep(2)
感谢您的宝贵时间,
【问题讨论】:
-
尝试将其上传到 AWS EC-2 - 一开始不起作用。
selenium.common.exceptions.NoSuchElementException: Message: no such element: Unable to locate element: {"method":"css selector","selector":"[name="identifier"]"}
标签: python python-3.x automation gmail