Какое я придумал решение, и хотел спросить получиться ли так, и правильное ли оно вообще
Я создал клас 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 классы, можно выгребать по ним. Еще селениум умеет (по крайней мере, раньше), собирать несколько элементов с одинаковыми селекторами в список. Так вам не нужен будет цикл