Interact with Elements¶
Get value¶
In order to retrieve an element’s value, use the value
property:
browser.find_by_css('h1').first.value
or
element = browser.find_by_css('h1').first
element.value
Clicking links¶
You can click in links. To click in links by href, partial href, text or partial text you can use this. IMPORTANT: These methods return the first element always.
browser.links.find_by_href('http://www.the_site.com/my_link').click()
or
browser.links.find_by_partial_href('my_link').click()
or
browser.links.find_by_text('my link').click()
or
browser.links.find_by_partial_text('part of link text').click()
Interacting with forms¶
browser.fill('query', 'my name')
browser.attach_file('file', '/path/to/file/somefile.jpg')
browser.choose('some-radio', 'radio-value')
browser.check('some-check')
browser.uncheck('some-check')
browser.select('uf', 'rj')
To trigger JavaScript events, like KeyDown or KeyUp, you can use the type method.
browser.type('type', 'typing text')
If you pass the argument slowly=True to the type method you can interact with the page on every key pressed. Useful for testing field’s autocompletion (the browser will wait until next iteration to type the subsequent key).
for key in browser.type('type', 'typing slowly', slowly=True):
pass # make some assertion here with the key object :)
You can also use type
and fill
methods in an element:
browser.find_by_name('name').type('Steve Jobs', slowly=True)
browser.find_by_css('.city').fill('San Francisco')
Verifying if element is visible or invisible¶
To check if an element is visible or invisible, use the visible
property. For instance:
browser.find_by_css('h1').first.visible
will be True if the element is visible, or False if it is invisible.
Verifying if element has a className¶
To check if an element has a className, use the has_class
method. For instance:
browser.find_by_css('.content').first.has_class('content')
Interacting with elements through a ElementList object¶
Don’t you like to always use first
when selecting an element for clicking, for example:
browser.find_by_css('a.my-website').first.click()
You can invoke any Element
method on ElementList
and it will be proxied to the first element of the list. So the two lines below are equivalent:
assert browser.find_by_css('a.banner').first.visible
assert browser.find_by_css('a.banner').visible
Get the shadow root of an element¶
The shadow_root property provides access to the ShadowRootElement object. ShadowRootElement implements the find_by_<x> methods.
shadow_root = browser.find_by_css('a.my-website').first.shadow_root
elements = shadow_root.find_by_css('.my-elements')