代码之家  ›  专栏  ›  技术社区  ›  Automation Choicez

将Selenium工具与C一起使用#自动单击从gmail帐户收到的电子邮件中的链接

  •  0
  • Automation Choicez  · 技术社区  · 7 年前

    我正在使用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 PAGE

    即使我输入了所有正确的详细信息,它仍然会显示“找不到电子邮件”。每次我运行脚本时,都会面临同样的问题。

    我尝试了不同的电子邮件ID,无论电子邮件ID如何,每当我从自动化脚本运行它时,我都会被重定向到“查找您的电子邮件”页面

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

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

    我在Windows上使用Google Chrome作为我的web浏览器。

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

    代码:

    GMAIL页面

    [FindsBy(How=How.Id,Using=“identifierId”)]公共IWebElement Gmail用户名{get;set;}

    [FindsBy(How=How.Name,Using=“password”)]公共IWebElement Gmail密码{get;set;}

    [FindsBy(How=How.ClassName,Using=“CwaK9”)]公共IWebElement gmailNext{get;set;}

    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用户必须通过单击发送到电子邮件的链接来完成注册以设置密码

    谢谢

    自动化选项Z

    1 回复  |  直到 7 年前
        1
  •  0
  •   Aman B    7 年前

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