我正在使用硒来自动化Web应用程序中的邮件验证过程。我已经有一个脚本来登录gmail并阅读该帐户收到的激活邮件。脚本直到昨天都运行良好,但是今天我遇到了问题。
Additional Screenshot of issue
如果使用硒启动浏览器,则Gmail不允许登录。说,
您使用的是Google无法识别的浏览器,或者是我们不支持的浏览器设置。
使用的软件:“ webdriverio”:“ ^ 4.14.1”,“ wdio-cucumber-framework”: “ ^ 2.2.8”
感谢您的帮助。
答案 0 :(得分:3)
经过数小时的反复试验,我只是尝试了一些对我有用的东西。
将args: ['--disable-web-security', '--user-data-dir', '--allow-running-insecure-content' ]
添加到我的配置中解决了该问题。
后来我意识到,这不是帮助我的原因,因为我尝试使用另一封电子邮件,但没有用。经过一些观察,我发现其他问题,并且已经尝试和测试了。
使用自动化:
转到https://stackoverflow.com/users/login 选择使用Google策略登录 输入Google用户名和密码 登录到Stackoverflow 转到https://gmail.com(或您要访问的任何Google应用)
在一整天(大约24小时)内持续进行此操作后,尝试直接将您的登录信息直接自动自动直接登录gmail(或您要访问的任何Google应用)...我至少有两个人这样做成功。 PS-您可能要继续进行stackoverflow登录,直到我们都经历了该阶段为止,至少收到验证码请求。
答案 1 :(得分:2)
经过反复试验,发现只有在已经从同一App / IP /设备创建了多个gmail帐户的情况下,才发生此问题。 Google会以某种方式标记这些帐户并阻止它们(如果它们是由自动化框架/扩展程序启动的)。
临时解决方案:
我的拙见是完全避免自动化第三方Mail应用程序的UI,因为您无法预测它们的UI和元素将如何变化。他们可能出于安全目的阻止您启动,并且他们拥有这样做的一切权利!
感谢Hamza Lachi和Rahul L花费您宝贵的时间来帮助我。
答案 2 :(得分:2)
转到 Gmail --> 设置 --> 搜索“不太安全的应用访问” --> 启用
这不是建议的方法,因为它允许访问安全性较低的应用程序并且更容易进入您的帐户,但如果它只是一个测试帐户并且没有重要数据传入或传出,您可以提供此试一试。
答案 3 :(得分:0)
您需要打开编辑器并复制此代码,并将其粘贴并保存为email.py
,然后在该目录中打开terminal / cmd / powershell并键入此python .\email.py
注意:
确保将chrome驱动程序放在保存python文件的目录中
您需要复制此代码并将其粘贴到编辑器中
这是脚本:
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import time
import pyautogui as pg
username = input("Enter Your Username: ")
password = input("Enter Your Password: ")
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("https://accounts.google.com/ServiceLogin?service=mail&passive=true&rm=false&continue=https://mail.google.com/mail/&ss=1&scc=1<mpl=default<mplcache=2&emr=1&osid=1#identifier")
driver.maximize_window()
mail = WebDriverWait(driver, 100).until(EC.element_to_be_clickable((By.XPATH, "//*[@id='identifierId']"))).send_keys(username)
login = WebDriverWait(driver, 100).until(EC.element_to_be_clickable((By.XPATH, "//*[@id='identifierNext']/span"))).click()
passw = WebDriverWait(driver, 100).until(EC.element_to_be_clickable((By.XPATH, "//*[@id='password']/div[1]/div/div[1]/input"))).send_keys(password)
next = WebDriverWait(driver, 100).until(EC.element_to_be_clickable((By.XPATH, "//*[@id='passwordNext']/span/span"))).click()
答案 4 :(得分:0)
将cookie编辑器添加到浏览器。
将您的帐户Cookie信息添加到浏览器。 您的帐户将自动打开。
答案 5 :(得分:0)
通过stackoverflow登录gmail的步骤:
您可以复制此代码并将其粘贴到编辑器中,必须在代码中要求的位置输入chrome驱动程序的路径,gmail的电子邮件地址和密码。
collect($respon_tel['item'])
->pluck('judul_kontrak', 'judul_kontrak')
->map($f = fn ($item) => trim(strtolower($item)))
->diff(
collect($model)->pluck('nama_proyek')->map($f)
)->map(function ($item, $key) {
return [
'nama_proyek' => $key,
'from' => 'Another API',
];
})->values();
答案 6 :(得分:0)
找到解决方案,添加这些论点:
options.AddArguments("--disable-web-security", "--user-data-dir=true", "--allow-running-insecure-content");
^^ C#顺便说一句
答案 7 :(得分:0)
我认为这不是自动化框架的问题,也不是自动化 Chrome 应用程序的问题,而是 Google 服务器阻止了自动登录请求。我没有任何明确的证据/真正了解他们是如何做到的,但有几条线索将我指向了这个方向:
最近我尝试了 Cypress 和 Taiko,但没有任何效果,同样的“被拒绝”问题,这破坏了我为我的应用(使用 GG OIDC 登录)进行 e2e 测试的最初计划。