Автоматизируйте веб-страницу так, как она разработана. Я бы посоветовал вам использовать стратегию css locator здесь.
Согласно приведенному выше фрагменту html, он выглядит как сетка, отображает элементы в виде строк сетки.
Сначала определите общее количество строки сетки, т. е.
[class*="MuiGrid-root campaign-usecase-item"], the above locator describe the each grid cell
Как только вы сможете идентифицировать все строки сетки, перемещайтесь для определения необходимого индекса строки
locator : [class*="MuiGrid-root MuiGrid-item"]:not([style]) will give you the
name (like 2fa) and price of each section
указатель флажка: input [type = 'checkbox']
List<WebElement> gridRows = driver.findElements(By.cssLocator("[class*='MuiGrid-
root campaign-usecase-item']"));
int totalGridCells = gridRows.size;
int reuiredGridRowIndex;
for(int i=0' i<totalGridCells; : i++){
if(gridRows.get(i).findElements(By.cssLocator("[class*='MuiGrid-root MuiGrid-
item']:not([style])").get(0).getText().equals("2FA")){
// 2fa value will be dynamic and pass as function argument
reuiredGridRowIndex = i;
break;
}
}
// теперь на основе индекса вы можете щелкнуть или получить цену любого значения ячейки в строке с индексом
// установить флажок
driver.findElements(By.cssLocator("[class*='MuiGrid-root campaign-usecase-
item']")).get(reuiredGridRowIndex
).findElement(By.cssLocator("input[type='checkbox']")).click()
// получить цену
driver.findElements(By.cssLocator("[class*='MuiGrid-root campaign-usecase-
item']")).get(reuiredGridRowIndex ).findElements(By.cssLocator("
[class*="MuiGrid-root MuiGrid-item"]:not([style])")).get(1).getText()
да, кода больше, но приведенный выше код является более гибким, масштабируемым и стабильным по сравнению со стратегией xpath. Возможно, вам придется изменить значение локатора, так как у меня нет полной страницы html.