Я пытаюсь сделать автоматизацию, и мне нужно выбрать случайный продукт на странице.
Это мой код, и он не работает.
//Select random product.
List<WebElement> allProducts= driver.findElements(By.xpath("//div[@class='m-grid-col-9']"));
int allList= allProducts.size();
Random random= new Random();
int RandomUrun= random.nextInt(allList);
allProducts.get(RandomUrun).click();
Я пытаюсь получить случайный продукт на этом сайте: https://www.turkcell.com.tr/pasaj/cep-telefonu




Вы используете неправильный локатор. //div[@class='m-grid-col-9'] соответствует некоторому контейнеру, в котором находятся все эти продукты. Вместо этого вы можете использовать этот XPath:
"//div[@class='m-grid-col-4 product']"
Приведенный выше локатор можно даже сократить до этого CSS-селектора:
"div.product"
Итак, вместо List<WebElement> allProducts= driver.findElements(By.xpath("//div[@class='m-grid-col-9']")); попробуйте
List<WebElement> allProducts= driver.findElements(By.cssSelector("div.product"));
Кроме того, вам нужно будет прокрутить случайно выбранный элемент в представление, поскольку не все элементы изначально находятся внутри видимого окна просмотра экрана.
Конечно, после сбора всех этих элементов вам нужно прокрутить до элемента, прежде чем щелкнуть его, поскольку не все продукты изначально находятся внутри видимого окна просмотра. я добавлю это к ответу
Хорошо, я жду
Сделанный. Надеюсь, вы знаете, как прокручивать элемент в представлении?
Я использовал js.executeScript("window.scrollBy(0,900)"); но снова выдал ту же ошибку.
Нет, вам нужно прокрутить конкретный выбранный элемент в представление. Для некоторых элементов вам вообще не нужно будет прокручивать, для других нужно, для третьих делать это больше. Зависит от расположения случайно выбранного элемента
Примерно так: stackoverflow.com/a/20487332/3485434
В вашем случае элемент уже существует, поэтому вам нужно будет применить к нему это ((JavascriptExecutor) driver).executeScript("arguments[0].scrollIntoView(true);", element);
Ты лучший!
на этот раз я попытался, как вы сказали, но на этот раз это дало мне ошибку «этот элемент не кликабельный».