Выберите случайный элемент из списка в Selenium Java и нажмите на него, но getAttribute не равен нулю - PullRequest
0 голосов
/ 13 июня 2019

Я пытаюсь получить случайный элемент из списка и щелкнуть по нему.Дело в том, что элементы - это продукты, которые имеют атрибут «количество», и я хочу нажать на случайный элемент, количество которого не равно нулю.Я использую Selenium и Java.

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

    List<WebElement> products= driver.findElements(By.id("elementId"));
    List<Integer> productsNotEqualToZero = new ArrayList<>();

    for(webElement:products){
    if(!webElement.getAttribute("quantity").equals("0")){


productsNotEqualToZero.add(Integer.ParseInt(webElement.getAttribute("quantity 
    ")))
    }
    }
    Random random = new Random();
    int result = random.nextInt(productsNotEqualToZero.size());
    products.get(result).click;

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

1 Ответ

1 голос
/ 13 июня 2019

Вот простой подход.

Пример HTML:

<html><head></head><body><div>
		<select>
			<option quantity="1">Apple</option>
			<option quantity="4">Banana</option>
			<option quantity="0">Cherry</option>
			<option quantity="1">DragonFruit</option>
		</select>
	</div><table border="1" id="mytable">
						
</table></body></html>

Xpath:

enter image description here

Сценарий:

// get all products whose quanity >0
    List<WebElement> productElems = driver.findElements(By.xpath("//select/option[@quantity>'0']"));
    // get the len of productElems
    int maxProducts = productElems.size();
    // get random number
    Random random = new Random();
    int randomProduct = random.nextInt(maxProducts);
    // Select the list item
    productElems.get(randomProduct).click();
...