Селену не удается найти элемент, даже если имя класса не дублируется

#c# #selenium #selenium-webdriver #selenium-chromedriver

#c# #selenium #selenium-webdriver #selenium-chromedriver

Вопрос:

Моему коду не удается найти элемент на веб-сайте Nordstrom rack, даже если имя класса не дублируется. Учетная запись элемента (после регистрации) не распознается.

 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();
            ProfileUpdate profile = new ProfileUpdate();
            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);
            signup.Password.Submit();
            //signup.SignOut.Click();
            //WebDriverWait wait = new WebDriverWait(Driver.driver, TimeSpan.FromSeconds(1000));
            //wait.Until(ExpectedConditions.ElementToBeClickable(profile.Account));
            Thread.Sleep(2000);
            Driver.driver.SwitchTo().Window(parentHandle);
            Thread.Sleep(2000);
            profile.Account.Click();**//Unable to locate this element**
            Thread.Sleep(5000);
            //Driver.driver.Quit();

        }
    }
}
  

Сведения о классе Profile.cs, в котором указаны сведения о локаторе элемента account. Что я делаю не так?
Ошибка: не удалось найти элемент с помощью: By.cssSelector: secondary-nav__link.secondary-nav__link—account

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

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

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

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

Комментарии:

1. css должен начинаться либо с имени тега, либо с «.» если это класс. И не могли бы вы, пожалуйста, сообщить нам, с каким html-элементом вы пытаетесь взаимодействовать.

2. <a href=»/orders» class=»secondary-nav__link secondary-nav__link—account»> Учетная запись</a>

Ответ №1:

При использовании сектора Css нет необходимости указывать полное имя класса.Вы можете указать tagname.any of the class attribute или .any of the class attribute вместо этого это

 "secondary-nav__link.secondary-nav__link--account"
  

можете ли вы попробовать это в качестве селектора css

  WebElement element1=driver.findElement(By.cssSelector("a.secondary-nav__link"));
        Actions action = new Actions(driver);
        action.moveToElement(element1).click().build().perform();;
  

Комментарии:

1. извините за мою ошибку. попробуйте сейчас

2. @SayaliSheode : вы должны использовать класс action, чтобы щелкнуть по элементу. Я могу дать вам Java-код, пожалуйста, измените его на C #. я не знаю C#

3. Потрясающе, что сработало! Итак, в каких случаях мы должны использовать этот тип обозначения для идентификации?

4. Что можно использовать для идентификации женщин в этом случае HTML? <div class=»site-header__bottom»> <div class=»site-header__page-width-container site-header__page-width-container—unlocked»> <nav class=»site-header__primary-nav»> <ul class=»primary-nav primary-nav—nordstromrack»> <li class=»primary-nav__item»><a href=»/категория /Женщины» tabindex=»0″ class=»primary-nav__link»><span class=»primary-nav__item-label»>Женщины</span></a> <div class=»primary-nav__sub-nav»>

5. span.primary-nav__item-label