Ihor Harmatii
Ihor Harmatii

Reputation: 300

Return splitted list from loop "while" Python, Selenium

In my application, I have a table with users but the table can have more than 1 page with users. I want to get a list with all users in all pages with Selenium Webdriver Python. I have test function which goes to the first page, gets a list with all users then goes to the second page gets a list of users and until the pages no longer exist:

def test_users1(driver):
    login(driver, username="Admin", password="Password")
    while True:
         try:
            #gets list of elements
            userslist = driver.find_elements_by_css_selector(".even .odd")
            #goes to second page, third...etc.
            for i in range(1, 50):
                driver.find_element_by_link_text("%s" % i).click()
         except NoSuchElementException:
            break
         return (userslist)

I need to return split list with all users from all pages from my loop

Upvotes: 0

Views: 252

Answers (3)

Ihor Harmatii
Ihor Harmatii

Reputation: 300

def users1(driver):
    userslist = []
    while True:
        try:
            #gets list of elements
            userslist.extend(driver.find_elements_by_css_selector(".even .odd"))
            #goes to second page, third...etc.
            for i in range(1, 50):
                driver.find_element_by_link_text("%s" % i).click()
        except NoSuchElementException:
            break
    return userslist


def test_users1(driver):
    login(driver, username="Admin", password="Password")
    users = users1(driver)
    assert len(users) == 63

Upvotes: 0

user8060120
user8060120

Reputation:

Try use list extend method

def test_users1(driver):
    login(driver, username="Admin", password="Password")
    userslist = []
    while True:
        try:
            #gets list of elements
            userslist.extend(driver.find_elements_by_css_selector(".even .odd"))
            #goes to second page, third...etc.
            for i in range(1, 50):
                driver.find_element_by_link_text("%s" % i).click()
                userslist.extend(driver.find_elements_by_css_selector(".even .odd"))
                # Add new line here ^^^^
        except NoSuchElementException:
            break
    return (userslist)

Upvotes: 0

Ihor Harmatii
Ihor Harmatii

Reputation: 300

def users1(driver):
userslist = []
while True:
    try:
        #gets list of elements
        userslist.extend(driver.find_elements_by_css_selector("tbody tr"))
        #goes to second page, third...etc.
        for i in range(1, 50):
            driver.find_element_by_link_text("%s" % i).click()
    except NoSuchElementException:
        break
return len(userslist)

def test_users1(driver):
login(driver, username="Admin", password="Password")
assert users1(driver) == 50

Upvotes: 0

Related Questions