Я добавил 2 товара в корзину. на первом этапе моего теста. На последнем этапе я утверждаю, что тот же продукт, который был добавлен на первом этапе теста, появляется на последнем этапе, который является «страницей сводки заказа». Пожалуйста, найдите ниже код и снимки экрана. Здесь есть 2 элемента, все функции двух отображаемых элементов имеют одинаковые классы. просто индексация div отличается. остальное то же самое.
Я использую функциональность контекста сценария Specflow.
Mindwell, я хочу добиться того же, что и на этом изображении, в настоящее время у меня есть код только для 1 продукта, и я хочу сделать то же самое для нескольких продуктов.
1) Страница корзины. На этом шаге я беру все элементы страницы и принимаю их значения в контексте сценария.
string productname = pdpPage.getBrandName();
pdpPage.ExpandSideBar();
pdpPage.SelectProductQuantity(Quantity);
var hp = new HeaderPage(driver);
int currentBagQuantity = hp.getBagQuantity();
decimal currentTotalBagPrice = hp.getBagTotalPrice();
ScenarioContext.Current.Add("Product Name",productname);
ScenarioContext.Current.Add("QuantityAdded", int.Parse(Quantity));
ScenarioContext.Current.Add("BagQuantity", currentBagQuantity);
ScenarioContext.Current.Add("CurrentBagPrice", currentTotalBagPrice);
ScenarioContext.Current.Add("ProductPrice", pdpPage.getProductPriceInDecimal());
2) Страница сводки заказа. На этом этапе я утверждаю значения. Это страница сводки заказа.
var os = new OrderSummaryPage(driver);
string brandname = os.getOrderProductName();
int quantity = os.getOrderQuantity();
decimal price = os.getOrderPrice();
Assert.IsTrue(brandname.Equals((string)ScenarioContext.Current["Product Name"]), "Err! Product is different!, on pdp is :" + ScenarioContext.Current["Product Name"] + "on order summary is" + brandname);
Assert.IsTrue(quantity.Equals((int)ScenarioContext.Current["QuantityAdded"]), "Err! Quantity is different from ordered!");
Assert.IsTrue(price.Equals((decimal)ScenarioContext.Current["ProductPrice"]), "Err! Product price is appearing to be different!");
Assert.IsTrue(GenericFunctions.isElementPresent(os.Delivery_Address), "Delivery Address details are not present");
Assert.IsTrue(GenericFunctions.isElementPresent(os.Billing_Address), "Billing Address details are not present!!");
Я новичок в этом деле!! Как зациклить их и получить динамический материал. Я хочу проверить и подтвердить каждый товар Название продукта, цена, количество.
Делая это :
Мой пошаговый файл:
[When(@"I check the items on basket page")]
public void WhenICheckTheItemsOnBasketPage()
{
var bp = new BasketPage(driver);
var h = bp.getLISTItemsFromOrderPage();
for (int i = 0; i <= h.Count; i++)
{
ScenarioContext.Current.Add("item", h[i]);
}
}
BasketPage.cs
public IList getLISTItemsFromOrderPage()
{
List<BasketItems> orderProducts = new List<BasketItems>();
var elements = (driver.FindElements(By.Id("basketitem")));
foreach (IWebElement element in elements)
{
orderProducts.Add(CreateOrderProduct(element));
}
return orderProducts;
}
public BasketItems CreateOrderProduct(IWebElement item)
{
return new BasketItems()
{
BrandName = item.FindElement(By.TagName("a")).Text.Trim(),
Quantity = GenericFunctions.DropDown_GetCurrentValue(item.FindElement(By.TagName("select"))),
Price = Convert.ToDecimal(item.FindElement(By.ClassName("col-md-2")).Text.Substring(1))
};
}
BasketItem.cs
public class BasketItems : BasketPageOR
{
public string BrandName { get; set; }
public string Quantity { get; set; }
public decimal Price { get; set; }
}
Пожалуйста помоги! Заранее спасибо!!
getElements
, чтобы получить все элементы с одним и тем же тегом. Здесь вы можете получить элементы сid=productorderitems
.getElements
возвращает список элементов (в java), поэтому вы можете перебирать список, чтобы выполнить нужные проверки. - person Vivek Singh   schedule 15.12.2014foreach(IWebElement element in list)
, чтобы повторить это... - person Vivek Singh   schedule 15.12.2014