Как установить несколько флажков в зависимости от значения с помощью Selenium и Java - PullRequest
0 голосов
/ 09 февраля 2019

Я пытаюсь установить несколько флажков.Вот мой HTML

<div class="col-md-6">
   <div class="form-sections">
      <ul>
         <li>Select permissions</li>
         <li><input type="checkbox" id="permissions1549733530963" name="permissions"><label for="permissions1549733530963">Select all</label></li>
      </ul>
      <div class="searchbox-container">
         <div class="check-list">
            <ul>
               <li><input type="checkbox" id="371549733530963" name="permissions" value="Add User"><label for="371549733530963">Add User</label></li>
               <li><input type="checkbox" id="31549733530965" name="permissions" value="View User"><label for="31549733530965">View User</label></li>
            </ul>
         </div>
      </div>
   </div>
</div>

Я хочу установить только два флажка.Я делаю это:

driver.findElement(By.xpath("//input[@type='checkbox' && @name='permissions' && @value='"+value+'"")).click();

здесь тег id генерируется случайным образом.Как выбрать несколько флажков на основе тега значения?

Ответы [ 2 ]

0 голосов
/ 10 февраля 2019

Чтобы установить любой из флажков , вы можете создать функцию следующим образом:

public void locateClickCheckbox(String item)
{
    String myElement = new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//div[@class='form-sections']//div[@class='check-list']//li/input[@value='" + item + "']"))).getAttribute("id");
    new WebDriverWait(driver, 20).until(ExpectedConditions.elementToBeClickable(By.xpath("//div[@class='form-sections']//div[@class='check-list']//li/label[@for='" + myElement + "']"))).click();
}

Теперь вы можете вызывать функцию из любой точки вашей программы как:

locateClickCheckbox("Add/Update Network Security")
locateClickCheckbox("Create User")
locateClickCheckbox("Create Project")
locateClickCheckbox("Update User Details")
locateClickCheckbox("View User")
locateClickCheckbox("Assign Permissions")
0 голосов
/ 09 февраля 2019

Используя строковый массив, я сделал это. Пожалуйста, попробуйте.

String[] users = {"Add/Update Network Security", "Create User"};
     int size = users.length;
        for (int i=0; i<size; i++)
        {
           String value=users[i];
           System.out.println(value);

           WebDriverWait wait = new WebDriverWait(driver, 30);
           wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//input[@type='checkbox' and @value='" +value +"']"))).click();


        }

Или

String[] users = {"Add/Update Network Security", "Create User"};
         int size = users.length;
            for (int i=0; i<size; i++)
            {
               String value=users[i];
               System.out.println(value);
               WebElement element=driver.findElement(By.xpath("//input[@type='checkbox' and @value='" +value +"']"));
               JavascriptExecutor js = (JavascriptExecutor) driver;
               js.executeScript("arguments[0].click();", element);                           

            }
...