2015-05-25 1 views
1

Я пытаюсь найти кнопку добавить в корзину присутствуют или не использовать петлю из все поля элемента из следующих кодаКак найти тот же элемент из сетки элементов, используя цикл в java selenium?

<div class="page-body"> 
<div class="product-selectors"> 
<div class="product-filters-wrapper"> 
<div class="product-grid"> 
<div class="item-box"> 
<div class="item-box"> 
<div class="item-box"> 
<div class="item-box"> 
</div> 

в каждой коробке пункта ниже код

<div class="item-box"> 
<div class="product-item" data-productid="20"> 
<div class="picture"> 
<div class="details"> 
    <h2 class="product-title"> 
    <div class="product-rating-box" title="1 review(s)"> 
     <div class="description"> 12x optical zoom; SuperRange Optical Image Stabilizer </div> 
     <div class="add-info"> 
     <div class="prices"> 
      <div class="buttons"> 
       <input class="button-2 product-box-add-to-cart-button" type="button" onclick="AjaxCart.addproducttocart_catalog('/addproducttocart/catalog/20/1/1 ');return false;" value="Add to cart"> 
      </div> 
     </div> 
     </div> 
    </div> 
</div> 

мне нужно найти, что все itembox добавляет в корзину кнопку, присутствующую или не использующую цикл. если кто-нибудь может помочь, пожалуйста,

ответ

0

Предлагаю избегать петли, если не нужно. Вам не нужно делать цикл, чтобы узнать, если это явно не требуется. Вы можете найти подсчет Добавить в корзину кнопку и сравнить с известным значением

By byCss = By.cssSelector(".item-box>div input[value='Add to cart']"); 
int cartCount = driver.findElements(byCss).size(); 

if (cartCount != 4){ 
    //fail the test 
} 

Если вы точно один на перекручивание и проверить, если кнопка ввода существует или нет.

By itemBoxes = By.className("item-box"); 
By button = By.cssSelector("[type='button'][value='Add to cart']"); 

List<WebElement> webElementList = driver.findElements(itemBoxes); 
for (WebElement element: webElementList){ 
    //simply taking size if exist it will return 1 
    if (element.findElements(button).size() != 1){ 
     //fail 
    } 
} 
+0

Помогло ли это? – Saifur

+0

спасибо, что этот код работает идеально, но мне нужно напечатать товарный тилит, который не имеет кнопки для добавления в корзину кнопки – ddjadav

+0

, и из каждого четырех предметов коробка его чеканка, если не может найти из одной коробки предметов, она должна пройти тест – ddjadav

0

Вы можете использовать поиск по xpath внутри цикла.

Что-то вроде

".//input[@value='Add to cart'][1]" 
".//input[@value='Add to cart'][2]" 
".//input[@value='Add to cart'][3]" 
etc 

не уверен, что это правильно XPath, но в целом она будет работать для вас, братан. Или что-то вроде этого:

string xpath=".//input[@value='Add to cart']"; 

var AddToCartBtnsList = driver.findElements(By.Xpath(xpath)); 

foreach(IWebElement button in AddToCartBtnsList) 
{ 
    button.click(); 
}