Обработка чекбокса в селене - PullRequest
0 голосов
/ 24 августа 2018

На моей странице есть один checkBox для двух полей каждое, и мне нужно передать опцию проверки или нет как универсальный метод. Пробовал с if else петлей и переключателем, но не работает.

Мой код:

public void checkBoxClick(String checkBox, String propName){
    switch (checkBox) {
        case "Checked":
            WebElement element=driver.findElement(By.name(propName));
            element.click();
            break;
        case "UnChecked":
            break;
    }
}

Файл определения шага:

@Then("^Enter (.*) also check (.*) and (.*)$")
public void enter_rucNo_check_transit(String checkBox1, String checkBox2) throws InterruptedException {
    driver_interactions.checkBoxClick("mrclBulkHeader.transit", checkBox1);
    driver_interactions.checkBoxClick("mrclBulkHeader.airTransit", checkBox2);
}

Я не знаю, почему чекбокс не получает щелчок. Кто-нибудь может меня поправить.

Ответы [ 2 ]

0 голосов
/ 24 августа 2018

попробуйте это:

public void checkBoxClick(String propName,String checkBox ){
    switch (checkBox) {
        case "Checked":
            WebElement element=driver.findElement(By.name(propName));
            element.click();
            break;
        case "UnChecked":
            break;
    }
}
0 голосов
/ 24 августа 2018

Вот метод, который будет проверять или снимать ваш флажок:

public void checkBoxSelect(String propName, boolean select){
    WebElement element=driver.findElement(By.name(propName));
    if (element.isSelected() != select) {
        element.click();
}

Если вы хотите поставить галочку и не поставить галочку, она сделает это. Если флажок уже установлен, ничего не будет делать:

checkBoxSelect("checkboxname", true);

Если вы хотите снять флажок и флажок еще не снят, он сделает это. Если флажок уже снят, ничего не будет делать:

checkBoxSelect("checkboxname", false);

Ваш шаг будет:

@Then("^Enter (.*) also check (.*) and (.*)$")
public void enter_rucNo_check_transit(String checkBox1, String checkBox2) throws InterruptedException {
    driver_interactions.checkBoxSelect("mrclBulkHeader.transit", true);
    driver_interactions.checkBoxSelect("mrclBulkHeader.airTransit", true);
}

На мой взгляд, отдельные из них будут лучше:

@Then("^Set  value of  \"Transit\" checkbox to (.*)$")
public void enter_rucNo_check_transit(String check) throws InterruptedException {
    driver_interactions.checkBoxSelect("mrclBulkHeader.transit", string.equalsIgnoreCase("true"));
}
@Then("^Set value of \"Air Transit\" checkbox to (.*)$")
public void enter_rucNo_check_transit(String check) throws InterruptedException {
    driver_interactions.checkBoxSelect("mrclBulkHeader.airTransit", string.equalsIgnoreCase("true"));
}

Вы устанавливаете флажки по имени атрибута "mrclBulkHeader.transit" и "mrclBulkHeader.airTransit"? Пожалуйста, поделитесь своим HTML?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...