Size: a a a

QA — Автоматизация

2020 September 16

AP

Artem Pokalchuk in QA — Автоматизация
Oleksandr Romanov
а вообще - нет ли доступа к созданию типа данных ресторан через базу или через АПИ.
нету, это я просто должен описать page object одной страницы и реализовать требование из traceability matrix
As an Owner of a restaurant, I want to have the possibility to view a list of my restaurants
источник

AP

Artem Pokalchuk in QA — Автоматизация
Oleksandr Romanov
Или Вы их со страницы считываете?
со страницы
источник

OR

Oleksandr Romanov in QA — Автоматизация
Artem Pokalchuk
нету, это я просто должен описать page object одной страницы и реализовать требование из traceability matrix
As an Owner of a restaurant, I want to have the possibility to view a list of my restaurants
Сделайте кейс, в котором вы добавите 1-3 ресторана и проверите что они отображаются на странице. Нет нужды добавлять 100 или 1000 ресторанов.
источник

VM

Vova Moskalenko in QA — Автоматизация
Artem Pokalchuk
Какое я придумал решение, и хотел спросить получиться ли так, и правильное ли оно вообще
Я создал клас Restaurant, который имеет все эти поля
public IWebElement Name;
public IWebElement Adress;
public IWebElement Phone;
public IWebElement PreviewText;
public List<IWebElement> Tags;
public IWebElement Description;
public IWebElement Status;

Пытаюсь реализовать метод, который проходился бы циклом, создавал экземпляр класа ресторан и добавлял его в список ресторанов:
for (int i = 0; i < 100; ++i)
           {
               restaurantsList.Add(new Restaurant()
               {
                   Name = driver.FindElement(By.XPath($"//*[@id=\"root\"]/main/div/div/div/div[1]/div[1]/div[{i}]/div/div[2]/div/div[1]/h2")),
                   Adress = driver.FindElement(By.XPath($"//*[@id=\"root\"]/main/div/div/div/div[1]/div[1]/div[{i}]/div/div[2]/div/div[3]/div[1]/h6")),
                   Phone = driver.FindElement(By.XPath($"//*[@id=\"root\"]/main/div/div/div/div[1]/div[1]/div[{i}]/div/div[2]/div/div[3]/div[2]/h6")),
                   PreviewText = driver.FindElement(By.XPath($"//*[@id=\"root\"]/main/div/div/div/div[1]/div[1]/div[{i}]/div/div[2]/div/div[2]/p")),
                   Status = driver.FindElement(By.XPath($"//*[@id=\"root\"]/main/div/div/div/div[1]/div[1]/div[{i}]/div/div[2]/div/div[1]/div/span"))
               });
               if(restaurantsList[i].Name == null)
               {
                   restaurantsList.RemoveAt(i);
                   break;
               }
           }
подучи xpath, а не копируй его с браузера). Вообще, каждый из этих блоков ресторанов имеет одинаковые css классы, можно выгребать по ним. Еще селениум умеет (по крайней мере, раньше), собирать несколько элементов с одинаковыми селекторами в список. Так вам не нужен будет цикл
источник

OR

Oleksandr Romanov in QA — Автоматизация
Код если работает на нескольких ресторанах - будет работать и на сотне - +- одинаково.
источник

AP

Artem Pokalchuk in QA — Автоматизация
в требовании сказано, что нужен весь список ресторанов прост
источник

OR

Oleksandr Romanov in QA — Автоматизация
Vova Moskalenko
подучи xpath, а не копируй его с браузера). Вообще, каждый из этих блоков ресторанов имеет одинаковые css классы, можно выгребать по ним. Еще селениум умеет (по крайней мере, раньше), собирать несколько элементов с одинаковыми селекторами в список. Так вам не нужен будет цикл
Совершенно верно.
источник

OR

Oleksandr Romanov in QA — Автоматизация
Artem Pokalchuk
в требовании сказано, что нужен весь список ресторанов прост
Получите список ресторанов через ArrayList<IWebElement>
источник

OR

Oleksandr Romanov in QA — Автоматизация
и итерируйтесь по нему.
источник

OR

Oleksandr Romanov in QA — Автоматизация
Если элементы на странице не имеют тесты или уникальных айди - пойдет к разработчику и договоритесь чтоб такие идентификаторы были добавлены
источник

OR

Oleksandr Romanov in QA — Автоматизация
IList<IWebElement> selectElements = driver.FindElements(By.TagName("select"));
var displayedSelectElements = selectElements.Where(se => se.Displayed);
источник

OR

Oleksandr Romanov in QA — Автоматизация
чтото такое.
источник

AP

Artem Pokalchuk in QA — Автоматизация
Oleksandr Romanov
Если элементы на странице не имеют тесты или уникальных айди - пойдет к разработчику и договоритесь чтоб такие идентификаторы были добавлены
не получиться увы) проект заброшен, приходится работать с чем есть, используется в качестве обучения))
источник

AP

Artem Pokalchuk in QA — Автоматизация
Oleksandr Romanov
Получите список ресторанов через ArrayList<IWebElement>
ну сначало нужно создать экземпляры этих ресторанов
источник

AP

Artem Pokalchuk in QA — Автоматизация
Вот мой класс, в который буду записывать
источник

AP

Artem Pokalchuk in QA — Автоматизация
вот метод
источник

AP

Artem Pokalchuk in QA — Автоматизация
и вот каждый путь XPath там меняется только одно значение для следующего элемента
источник

AP

Artem Pokalchuk in QA — Автоматизация
Vova Moskalenko
подучи xpath, а не копируй его с браузера). Вообще, каждый из этих блоков ресторанов имеет одинаковые css классы, можно выгребать по ним. Еще селениум умеет (по крайней мере, раньше), собирать несколько элементов с одинаковыми селекторами в список. Так вам не нужен будет цикл
да, у них одинаковые css классы, а как тогда вытащить значение текста внутри, если классы одинаковые, а текст будет разным везде? как достать в таком случае по css классу?
источник

A

Alex in QA — Автоматизация
Artem Pokalchuk
вот метод
За такие икспасы нужно сажать
источник

AP

Artem Pokalchuk in QA — Автоматизация
Alex
За такие икспасы нужно сажать
просто думал таким путём сработает через цикл
источник