使用带有 C# 的 Selenium 工具自动单击从 gmail 帐户收到的电子邮件中的 link

Using Selenium tool with C# automatically click on link received in an e-mail from a gmail account

我正在使用 Selenium 工具进行自动化,但由于这个 gmail 问题,我的自动化脚本失败了。

不确定,在我的自动脚本在登录页面 (https://google.com) 上发送我的电子邮件后,通常它应该转到

输入密码页面而不是为什么 gmail 导航到页面

https://accounts.google.com/signin/v2/usernamerecovery?service=mail&passive=true&rm=false&continue=https%3A%2F%2Fmail.google.com%2Fmail%2F&ss=1&scc=1&ltmpl=default&ltmplcache=2&emr=1&osid=1&flowName=GlifWebSignIn&flowEntry=ServiceLogin

它要求我 "Find Your Email" 输入恢复电子邮件。

FIND YOUR EMAIL PAGE

即使我输入了所有正确的详细信息,它仍然显示 "cannot find email"。每次我 运行 我的脚本都会遇到同样的问题。

我尝试过使用不同的电子邮件 ID,无论电子邮件 ID 是什么,只要我从我的自动化脚本 运行 它被重定向到 "Find Your Email" 页面

如果我刷新并手动输入我的电子邮件地址,它会识别我的电子邮件 ID 并导航到输入密码页面并且工作正常

谁能帮我解决这个问题,因为我的网站完全依赖于 link 我从电子邮件打开它。

我在 Windows 使用 Google Chrome 作为我的网络浏览器。

请参阅随附的“查找您的电子邮件”页面的屏幕截图

代码:

GMAIL 页面

[FindsBy(How = How.Id, Using = "identifierId")] public IWebElement gmailUserName { get;放; }

[FindsBy(How = How.Name, Using = "password")] public IWebElement gmailPassWord { get;放; }

[FindsBy(How = How.ClassName, Using = "CwaK9")] public IWebElement gmailNext { get;放; }

public void LaunchGmail()

    {
        webDriver.Manage().Cookies.DeleteAllCookies();

        webDriver.Navigate().GoToUrl("https://gmail.com");

    }

    public void GmailLogin(int iteration)

    {

        if (iteration < 1)

        {

            gmailUserName.SendKeys(ConfigurationManager.AppSettings["GmailUserName"] + "@gmail.com");

            gmailNext.Click();

        }

        Thread.Sleep(2000);

        gmailPassWord.SendKeys(ConfigurationManager.AppSettings["GmailPassWord"]);

        gmailNext.Click();

    }

测试设置页面

[绑定]

public class TestSetup

{

    public static IWebDriver WebDriver;

    Actions myAction;

    public static int TestCaseNumber = 0;

    public GmailPage _gmailPage = new GmailPage(WebDriver);

[场景前]

    public void BeforeScenario()

    {
        currentTest = Test.CreateNode("TestName : " + ScenarioContext.Current.ScenarioInfo.Title);

        String ScenarioName = ScenarioContext.Current.ScenarioInfo.Title;

        WebDriver.Manage().Window.Maximize();

        if (ScenarioName.Equals("Scenario Name"))
        {
            _gmailPage.launchGmail();

            _gmailPage.GmailLogin(TestCaseNumber);

            _gmailPage.DeleteRegistrationEmail();

            _gmailPage.gmailLogout();

        }

    }

在我启动 gmail 时使用迭代删除电子邮件并启动我的应用程序注册为用户并在用户在我的应用程序中注册后重新启动 Gmail 用户必须通过单击发送到电子邮件的 link 来完成注册设置密码

谢谢,

自动化选择z

Class CwaK9 分配给 2 个不同的控件(忘记密码和下一步按钮)。尝试使用 Id passwordNext(实际上定义了 click 方法)获取父 div 并调用 click 方法。这将确保单击下一个按钮。