def set_value(self, selector, value, clear=True, blur=True, **kwargs):
'''
Sets value of an element by CSS selector.
Parameters
----------
selector: str
A CSS selector to search for. This can be any valid CSS selector.
value: str
The value to set on the element matched by the selector.
clear: bool
Whether or not we should clear the element's value first.
If false, value will be appended to the current value of the element.
blur: bool
Whether or not we should blur the element after setting the value.
Defaults to True
kwargs:
passed on to wait_for_visible
'''
typing = kwargs.get('typing', False)
typing_speed = kwargs.get('typing_speed', 3)
typing_max_delay = kwargs.get('typing_max_delay', .33)
self.wait_for_visible(selector, **kwargs)
elem = kwargs.get('elem')
if not elem:
elem = self.get_element(selector)
if elem.tag_name == 'select':
self.set_select_by_value(elem, value)
else:
if clear:
self.clear(selector)
if typing:
for k in value:
delay = random() / typing_speed
if delay > typing_max_delay:
delay = typing_max_delay
sleep(delay)
elem.send_keys(k)
else:
elem.send_keys(value)
if self.driver == 'Gecko':
# Thank you so much Mozilla. This is awesome to have to do.
self.js("arguments[0].setAttribute('value', '" + value + "')", elem)
if blur:
elem.send_keys(Keys.TAB)
评论列表
文章目录