https://i.stack.imgur.com/VMebH.png [https://i.stack.imgur.com/mlHAY.png https://i.stack.imgur.com/a6hoy.png, https://i.stack.imgur.com/9K8nn.png, https://i.stack.imgur.com/SOPbS.png, https://i.stack.imgur.com/UZd5I.png, [введите описание изображения здесь] [2] У меня есть Анкета, и ответы находятся в другой форме, такой как текстовое поле, радиокнопки, флажки или раскрывающийся список. В моем следующем коде выполняется переключение l oop и выбор параметров переключателя, затем выполняется флажок l oop и флажок, а затем текстовое поле, 3 отдельных цикла работают, но это неправильный способ сделать это. Я хочу использовать if..else и для проверки его радио / check / textbox / select..et c.
List<WebElement> radioGroups = driver.findElements(By.xpath("//mat-radio-group[@role='radiogroup']"));
for(int j=0; j<radioGroups.size(); j++)
{
List<WebElement> radioOptions = radioGroups.get(j).findElements(By.tagName("mat-radio-button"));
if (radioOptions.size()>0)
{
Random rnd = new Random();
WebElement sValue = radioOptions.get(rnd.nextInt(radioOptions.size()));
Thread.sleep(1000);
act.moveToElement(sValue).click().build().perform();
}
}
List<WebElement> totalCheckboxes = driver.findElements(By.xpath("//app-mat-checkbox-group"));
WebElement checkBox =driver.findElement(By.xpath("//mat-checkbox/label/div/input"));
for(int k=0; k<totalCheckboxes.size(); k++)
{
List<WebElement> checkboxOption = totalCheckboxes.get(k).findElements(By.tagName("mat-checkbox"));
if (checkboxOption.size()>0)
{
Random rnd = new Random();
WebElement sValue = checkboxOption.get(rnd.nextInt(checkboxOption.size()));
act.moveToElement(sValue).click().build().perform();
}
}
}
List<WebElement> textboxes = driver.findElements(By.xpath("//div[@class='input ng-star-inserted']/div/div//div/input"));
for(int i=0; i<=textboxes.size()-2; i++)
{
wait.until(ExpectedConditions.visibilityOf(textboxes.get(i)));
if(textboxes.get(i).isEnabled())
{
final String getSaltString = getSaltString();
textboxes.get(i).sendKeys(getSaltString);}
}
}
У меня есть xpath, который можно использовать для if.else
//div[@class='answers-container col ng-star-inserted']/div[@class='TextBox']
//div[@class='answers-container col ng-star-inserted']/div[@class='CheckBox']
//div[@class='answers-container col ng-star-inserted']/div[@class='RadioButton']
//div[@class='answers-container col ng-star-inserted']/div[@class='DropDpwnList']
ИЛИ
app-input[@inputtype='text']
app-radio[@inputtype='radio']
app-radio[@inputtype='checkbox']
app-select
Я пытался, если (! Driver.findElements (By.xpath ("// div [@ class = 'контейнер ответов col ng-star-вставлен) '] / div [@ class =' TextBox '] "). isEmpty) {Код TextBox} и так же для других опций, но он не работал.
Любая помощь будет оценена.