简体   繁体   中英

String Array Method not Returning the Array Object - Selenium WebDriver

Please Find my code, its not Returning the Array object value, its return only one array object

public String[] verify_userRole(String[] Expected_role) {
        String[] actual_role = new String[4];
        String first;
        WebElement role_table = driver.findElement(By
                .xpath("//*[@id='tblListView']/tbody[1]"));
        List<WebElement> allRows = role_table.findElements(By.tagName("tr"));

        for (WebElement row : allRows) {
            List<WebElement> cells = row.findElements(By.tagName("td"));

            for (WebElement cell : cells) {
                first = cell.getText().toString();
                actual_role = new String[] {first};

                }
        }
        return actual_role;
    }

variable first its contain Four values ("name","name1","name2","name3") after convert this string value into an array (actual_role) then its return only one value ("name")

Please clarify what is the Problem for the above code

You re-initialize string array on every step in your loop.

You should do it only once.

   ArrayList<String> actual_role = new ArrayList<String>( )
   for (WebElement row : allRows) {
        List<WebElement> cells = row.findElements(By.tagName("td"));

        for (WebElement cell : cells) {
            first = cell.getText().toString();
            actual_role.add(first);

        }
    }

    return (String[]) actual_role.toArray( new String[ actual_role.size() ] );

BTW, I've converted your example to use intermediary ArrayList, because you don't know the actual data size, and it's error-prone to reinitialize arrays on the fly.

If the signature of the method, you are implementing, is not dictated by external framework, I suggest you use List<String> as a return type instead of String[] .

You always instantiate your array inside the loop:

actual_role = new String[] {first};

try instead:

actual_role[i] = first;

When i is the current index.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM