Update the instant page-object-generator tool
This tool is used to replace selectors in tests with page objects.
Here's an example of how it works on this existing file: (https://github.com/seleniumbase/SeleniumBase/blob/master/examples/basic_test.py)
from seleniumbase import BaseCase
class MyTestClass(BaseCase):
def test_basics(self):
self.open("https://store.xkcd.com/search")
self.type('input[name="q"]', "xkcd book\n")
self.assert_text("xkcd book", "div.results")
self.open("https://xkcd.com/353/")
self.click('a[rel="license"]')
self.go_back()
self.click_link("About")
self.click_link("comic #249")
self.assert_element('img[alt*="Chess"]')
Now run sbase objectify basic_test.py
:
sbase objectify basic_test.py
>>> ["page_objects.py"] was created!
>>> ["page_objects.py"] was updated!
>>> ["basic_test.py"] was updated!
Output:
Here's what the page_objects.py file now looks like:
class Page(object):
html = "html"
css_1 = 'input[name="q"]'
css_2 = "div.results"
css_3 = 'a[rel="license"]'
css_4 = 'img[alt*="Chess"]'
Here's what basic_test.py now looks like:
from .page_objects import Page
from seleniumbase import BaseCase
class MyTestClass(BaseCase):
def test_basics(self):
self.open("https://store.xkcd.com/search")
self.type(Page.css_1, "xkcd book\n")
self.assert_text("xkcd book", Page.css_2)
self.open("https://xkcd.com/353/")
self.click(Page.css_3)
self.go_back()
self.click_link("About")
self.click_link("comic #249")
self.assert_element(Page.css_4)
If the page_objects.py file already exists, it will get updated with new selectors when running sbase objectify FILE
or sbase extract-objects FILE
(assuming new selectors are found).
For more information on SeleniumBase console scripts, see: https://seleniumbase.io/seleniumbase/console_scripts/ReadMe/