C# FindElement (By ...) с двумя критериями - PullRequest
2 голосов
/ 31 января 2020

Я сейчас пытаюсь автоматизировать процесс оформления заказа. Сейчас я застрял, кнопки на сайте, отображающие размеры, практически идентичны, они различаются только по значению

enter image description here

Вот почему я хотел спросить, Я могу отличить их по двум критериям, таким как класс + значение.

Код:

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

namespace selenium1
{
    class MainClass
    {
        public static void Main(string[] args)
        {
            IWebDriver driver = new ChromeDriver();



            driver.Navigate().GoToUrl("https://www.off---white.com/en-de/shopping/off-white-odsy-1000-sneakers-14760681");

            IWebElement element = driver.FindElement(By.());

            element.Click();


        }
    }
}

Заранее благодарю за помощь!

Ответы [ 2 ]

2 голосов
/ 31 января 2020

вы можете использовать CSS селектор.

например: css = element_name[<attribute_name>='<value>']

Так что в вашем случае это будет:
IWebElement element1 = driver.FindElement(By.CssSelector("input[value='25']") IWebElement element2 = driver.FindElement(By.CssSelector("input[value='27']")

Эта статья должна помочь

1 голос
/ 31 января 2020

Вы правы. Вы можете объединить атрибут value с любым другим атрибутом, например, data-test, чтобы создать локаторы, которые будут уникально идентифицировать элемент в DOM Tree .

Чтобы click() на элементе с текстом 39 вам нужно вызвать WebDriverWait для нужного ElementToBeClickable(), и вы можете использовать любой из следующих Стратегий локатора :

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