Home > Mobile >  Why do I sometimes get the warning "Expected 'collections.Iterable', got 'WebEle
Why do I sometimes get the warning "Expected 'collections.Iterable', got 'WebEle

Time:12-01

Using Selenium's find_element(By.XPATH, "//tag[@class='classname']", when I try to iterate over elements of certain classes, I sometimes get this warning by Pycharm : "Expected 'collections.Iterable', got 'WebElement' instead". I don't understand why it would iterate over some classes with no problem and others not. Could it have something to do with the different tags?

In the code bellow, issues_available is highlighted in green and displays the warning mentioned above.

code:

issues_available = driver.find_element(By.XPATH, "//div[@class='issue ember-view']")
    currently_clicked_issue = driver.find_element(By.XPATH, "div[@class='issue active-override ember-view']")
    issues_list = []
    for issue in issues_available:

        issue_vol_number = issue.find_element(By.XPATH, ".//span[@class='label']").text
///

CodePudding user response:

When you write this

issues_available = driver.find_element(By.XPATH, "//div[@class='issue ember-view']")

Now issues_available is a single web element.

and It makes no sense to iterate a single web element.

Instead, you should use :

find_elements

which will return a list of web elements.

So, your effective code will be :

issues_available = driver.find_elements(By.XPATH, "//div[@class='issue ember-view']")
currently_clicked_issue = driver.find_element(By.XPATH, "div[@class='issue active-override ember-view']")
issues_list = []
for issue in issues_available:
    issue_vol_number = issue.find_element(By.XPATH, ".//span[@class='label']").text
  • Related