Код ниже работал у меня. Xpath ("// button [text () = 'ДОБАВИТЬ В КОРЗИНУ']"), который вы использовали, не будет работать, так как при нажатии на первый элемент («Огурец») текст кнопки изменился (с «ДОБАВИТЬ В КОРЗИНУ» на '✔ ДОБАВЛЕНО'). В течение l oop за очень короткий промежуток времени измененный текст кнопки остается прежним, а в следующем для l oop добавленный элемент «Огурец» исключен. Таким образом, здесь он будет рассматривать предмет рядом с ожидаемым предметом («Бринджал» считается 6-м предметом вместо «Бобы»). Таким образом, вы можете использовать здесь xpath «// div [@ class = 'product-action'] / button» вместо «// button [text () = 'ДОБАВИТЬ В КОРЗИНУ']».
WebDriver Driver = new ChromeDriver();
Driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
Driver.manage().window().maximize();
String url = "https://rahulshettyacademy.com/seleniumPractise/";
Driver.get(url);
String[] additems= {"Cucumber","Beans"};
AddtoCart(Driver, additems);
}
public static void AddtoCart(WebDriver Driver, String[] additems) {
List<WebElement> products=Driver.findElements(By.cssSelector("h4.product-name"));
for(int i=0;i<products.size();i++)
{
String[] productname=products.get(i).getText().split("-");
String frmtdname=productname[0].trim();
//format it to get actual vegetable name
//convert array into array list for easy search
// check whether name you extracted is present in arrayList or not-
List itemsneeded = Arrays.asList(additems);
if(itemsneeded.contains(frmtdname))
{
//click on Add to cart
Driver.findElements(By.xpath("//div[@class='product-action']/button")).get(i).click();
}
}
}