Невозможно зарегистрироваться на веб-сайте розничной торговли с помощью Selenium Webdriver, хотя ошибки нет - PullRequest
2 голосов
/ 10 марта 2019

Попытка зарегистрироваться на сайте Nordstrom через Selenium с помощью C #. Код выполняется правильно, но по какой-то причине регистрация не происходит. После регистрации на сайте Nordstrom в правом верхнем углу следует указать учетную запись вместо логина / регистрации. Там нет никакой ошибки, но она просто не регистрируется. Что-то не так с нажатием кнопки «Создать учетную запись»?

Вот код

using NordstromRack.UI_Elements;
using OpenQA.Selenium;
using OpenQA.Selenium.Interactions;
using OpenQA.Selenium.Support.UI;
using System;
using System.Threading;

namespace NordstromRack
{
    class EntryPoint
    {
        static void Main(string[] args)
        {
            String parentHandle = Driver.driver.CurrentWindowHandle; // get the current window handle
            EmailSignUp signup = new EmailSignUp();
            Driver.driver.Navigate().GoToUrl("https://www.nordstromrack.com/");
            Driver.driver.Manage().Window.Maximize();
            Thread.Sleep(1000);
            signup.SignUpLink.Click();

            foreach (String winHandle in Driver.driver.WindowHandles)
            {
                Driver.driver.SwitchTo().Window(winHandle);
            }
            //WebDriverWait wait = new WebDriverWait(Driver.driver, TimeSpan.FromSeconds(1000));
            //wait.Until(ExpectedConditions.ElementToBeClickable(signup.EmailInput));

            signup.EmailInput.Click();
            signup.EmailInput.SendKeys(Config.Credentials.Valid.BaseEmail);
            Thread.Sleep(1000);
            signup.Password.Click();
            signup.Password.SendKeys(Config.Credentials.Valid.Password);
            Thread.Sleep(1000);
            Actions action = new Actions(Driver.driver);
            action.MoveToElement(signup.CreateAccount).Click().Perform();
            Console.WriteLine("Signup Successful");
            Thread.Sleep(5000);

            //Driver.driver.Quit();
        }
    }
}

Вот класс для идентификации элементов

using OpenQA.Selenium;
using OpenQA.Selenium.Support.PageObjects;

namespace NordstromRack.UI_Elements
{
    public class EmailSignUp
    {
        public EmailSignUp()
        {
            PageFactory.InitElements(Driver.driver, this);
        }

        [FindsBy(How = How.CssSelector, Using = "input.form-label__input.form-label__input--password")]
        public IWebElement Password { get; set; }

        [FindsBy(How = How.CssSelector, Using = "input.form-label__input.form-label__input--email")]
        public IWebElement EmailInput { get; set; }

        [FindsBy(How = How.ClassName, Using = "secondary-nav__link")]
        public IWebElement SignUpLink { get; set; }

        [FindsBy(How = How.CssSelector, Using = "button.cta-button.cta-button--nordstromrack")]
        public IWebElement CreateAccount { get; set; }


    }
}

Вот класс водителя

using OpenQA.Selenium;
using OpenQA.Selenium.Chrome;

namespace NordstromRack
{
    public static class Driver
    {
        public static IWebDriver driver = new ChromeDriver();
    }
}

Ответы [ 2 ]

1 голос
/ 10 марта 2019

Вместо всего этого

signup.Password.SendKeys(Config.Credentials.Valid.Password);
Thread.Sleep(1000);
Actions action = new Actions(Driver.driver);
action.MoveToElement(signup.CreateAccount).Click().Perform()

Попробуйте это. Не нужно нажимать кнопку «Создать учетную запись».

signup.Password.SendKeys(Config.Credentials.Valid.Password);
signup.Password.Submit();
0 голосов
/ 10 марта 2019

Вы пробовали

signup.CreateAccount.SendKeys(Keys.Return);

Вместо

Actions action = new Actions(Driver.driver);
action.MoveToElement(signup.CreateAccount).Click().Perform();

Обратите внимание, что вам нужно будет добавить Keys к импорту селена.

?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...