使用 Selenium 在 AWS EC-2 中打开 Gmail

Using Selenium to open Gmail in AWS EC-2

感谢您的支持,我是 Python 的新手。我正在自动执行以下任务:

  1. 打开 Gmail
  2. 登录名和密码
  3. 查找电子邮件
  4. 点击一封电子邮件(有 8 封不同的邮件,每封邮件都有一个特定的主题
  5. 单击 link 并下载文件
  6. 将 .XLSX 转换为 .CSV
  7. 将 .CSV 上传到 Google Sheet

问题/挑战: 我想每天 运行 这个脚本 - 通过虚拟机(AWS EC2 或其他),但似乎只有在我的 Chromium window 处于活动状态时才使用 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)

感谢您的宝贵时间,

如果有人遇到过 - 解决方案是在 Chrome 选项中添加用户代理。一旦我们 运行 无头,这将解决问题。

这是快速代码:

ChromeOptions.add_argument(f'user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.61 Safari/537.36')