I ran into this issue while running automation to create Chargeback reports.
Here's a link to my PR.The failure was seen while running the PR on 5.7.Note that the issue occurs when the PR is run locally and on PRT.
https://github.com/ManageIQ/integration_tests/pull/4023/
2017-01-19 19:58:10,813 [I] Wait for Any of the elements '(<cfme.web_ui.tabstrip._TabStripField ident_string='Columns', arg=None>,)' to appear took 1 tries and 1.22817802429 seconds before failure from an exception. (/usr/lib/python2.7/site-packages/wait_for/__init__.py:144)
2017-01-19 19:58:14,460 [I] wait_for hit an exception: TypeError: Unprocessable type for elements(<cfme.web_ui.multibox.MultiBoxSelect unselected=None, selected=None>) -> class MultiBoxSelect (kwargs: {}) (/usr/lib/python2.7/site-packages/wait_for/__init__.py:135)
2017-01-19 19:58:14,460 [I] Wait for Any of the elements '(<cfme.web_ui.tabstrip._TabStripField ident_string='Columns', arg=<cfme.web_ui.multibox.MultiBoxSelect unselected=None, selected=None>>,)' to appear took 1 tries and 1.43055796623 seconds before failure from an exception. (/usr/lib/python2.7/site-packages/wait_for/__init__.py:144)
2017-01-19 19:58:17,280 [E] @pytest.yield_fixture(scope="module")
def chargeback_report_default(vm_ownership, assign_compute_default_rate, provider):
# Create a Chargeback report based on the default Compute rate; Queue the report.
owner = vm_ownership
data = {'menu_name': 'cb_' + provider.name,
'title': 'cb_' + provider.name,
'base_report_on': 'Chargeback for Vms',
'report_fields': ['Memory Used', 'Memory Used Cost', 'Owner',
'CPU Used', 'CPU Used Cost',
'Disk I/O Used', 'Disk I/O Used Cost',
'Network I/O Used', 'Network I/O Used Cost'],
'filter_show_costs': 'Owner',
'filter_owner': owner,
'interval_end': 'Today (partial)'}
report = CustomReport(is_candu=True, **data)
> report.create()
cfme/tests/intelligence/reports/test_validate_chargeback_report.py:306:
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
cfme/intelligence/reports/reports.py:176: in create
fill(report_form, self, action=form_buttons.cancel if cancel else form_buttons.add)
/usr/lib/python2.7/site-packages/multimethods.py:72: in __call__
return best(*args, **kwds)
utils/update.py:80: in _fill_with_updateable
fill(o, u.__dict__, **kw)
/usr/lib/python2.7/site-packages/multimethods.py:72: in __call__
return best(*args, **kwds)
cfme/web_ui/__init__.py:1553: in _fill_form_dict
return _fill_form_list(form, values.items(), **kwargs)
cfme/web_ui/__init__.py:1535: in _fill_form_list
fill_prev = fill(loc, value) # re-dispatch to fill for each item
/usr/lib/python2.7/site-packages/multimethods.py:72: in __call__
return best(*args, **kwds)
cfme/web_ui/tabstrip.py:138: in _fill_tabstrip
web_ui.fill(tabstrip_field.locate(), value)
/usr/lib/python2.7/site-packages/multimethods.py:72: in __call__
return best(*args, **kwds)
cfme/web_ui/multibox.py:238: in _fill_multibox_list
multi.add(*map(str, values), flush=True)
cfme/web_ui/multibox.py:119: in add
self.remove_all()
cfme/web_ui/multibox.py:97: in remove_all
if len(self._selected.options) == 0:
/usr/lib/python2.7/site-packages/selenium/webdriver/support/select.py:47: in options
return self._el.find_elements(By.TAG_NAME, 'option')
cfme/fixtures/pytest_selenium.py:1106: in _el
if self.is_patternfly:
cfme/fixtures/pytest_selenium.py:1102: in is_patternfly
return "selectpicker" in get_attribute(self._loc, "class")
/usr/lib/python2.7/site-packages/debtcollector/removals.py:242: in wrapper
return f(*args, **kwargs)
cfme/fixtures/pytest_selenium.py:792: in get_attribute
return element(loc).get_attribute(attr)
/usr/lib/python2.7/site-packages/debtcollector/removals.py:242: in wrapper
return f(*args, **kwargs)
cfme/fixtures/pytest_selenium.py:262: in element
matches = elements(o, **kwargs)
/usr/lib/python2.7/site-packages/debtcollector/removals.py:242: in wrapper
return f(*args, **kwargs)
/usr/lib/python2.7/site-packages/multimethods.py:72: in __call__
return best(*args, **kwds)
_ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _ _
@removed
@singledispatch
def elements(o, **kwargs):
"""
Convert object o to list of matching WebElements. Can be extended by registering the type of o
to this function.
Args:
o: An object to be converted to a matching web element, eg str, WebElement, tuple.
Returns: A list of WebElement objects
"""
check_visibility = kwargs.pop("check_visibility", True)
if hasattr(o, "locate"):
els = elements(o.locate(), **kwargs)
if check_visibility:
return [e for e in els if is_displayed(e)]
else:
return els
elif callable(o):
els = elements(o(), **kwargs)
if check_visibility:
return [e for e in els if is_displayed(e)]
else:
return els
else:
raise TypeError("Unprocessable type for elements({}) -> class {} (kwargs: {})".format(
> str(repr(o)), o.__class__.__name__, str(repr(kwargs))
))
E TypeError: Unprocessable type for elements(None) -> class NoneType (kwargs: {})
I ran into this issue while running automation to create Chargeback reports. Here's a link to my PR.The failure was seen while running the PR on 5.7.Note that the issue occurs when the PR is run locally and on PRT. https://github.com/ManageIQ/integration_tests/pull/4023/