Merge pull request #336 from seleniumbase/pytest-update-and-refactoring
Pytest update and refactoring
This commit is contained in:
commit
472024b11d
|
@ -247,50 +247,39 @@ self.generate_traffic_chain(pages, loops=1)
|
|||
|
||||
########
|
||||
|
||||
self.wait_for_element_present(selector, by=By.CSS_SELECTOR,
|
||||
timeout=settings.LARGE_TIMEOUT)
|
||||
self.wait_for_element_present(selector, by=By.CSS_SELECTOR, timeout=settings.LARGE_TIMEOUT)
|
||||
|
||||
self.assert_element_present(selector, by=By.CSS_SELECTOR,
|
||||
timeout=settings.SMALL_TIMEOUT)
|
||||
self.get_element(selector, by=By.CSS_SELECTOR, timeout=settings.LARGE_TIMEOUT)
|
||||
|
||||
self.assert_element_present(selector, by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT)
|
||||
|
||||
########
|
||||
|
||||
self.wait_for_element_visible(selector, by=By.CSS_SELECTOR,
|
||||
timeout=settings.LARGE_TIMEOUT)
|
||||
self.wait_for_element_visible(selector, by=By.CSS_SELECTOR, timeout=settings.LARGE_TIMEOUT)
|
||||
|
||||
self.wait_for_element(selector, by=By.CSS_SELECTOR,
|
||||
timeout=settings.LARGE_TIMEOUT)
|
||||
self.wait_for_element(selector, by=By.CSS_SELECTOR, timeout=settings.LARGE_TIMEOUT)
|
||||
|
||||
self.find_element(selector, by=By.CSS_SELECTOR, timeout=settings.LARGE_TIMEOUT)
|
||||
|
||||
self.assert_element(
|
||||
selector, by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT)
|
||||
self.assert_element(selector, by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT)
|
||||
|
||||
self.assert_element_visible(
|
||||
selector, by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT)
|
||||
self.assert_element_visible(selector, by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT)
|
||||
|
||||
########
|
||||
|
||||
self.wait_for_text_visible(text, selector="html", by=By.CSS_SELECTOR,
|
||||
timeout=settings.LARGE_TIMEOUT)
|
||||
self.wait_for_text_visible(text, selector="html", by=By.CSS_SELECTOR, timeout=settings.LARGE_TIMEOUT)
|
||||
|
||||
self.wait_for_exact_text_visible(text, selector="html", by=By.CSS_SELECTOR,
|
||||
timeout=settings.LARGE_TIMEOUT)
|
||||
self.wait_for_exact_text_visible(text, selector="html", by=By.CSS_SELECTOR, timeout=settings.LARGE_TIMEOUT)
|
||||
|
||||
self.wait_for_text(text, selector="html", by=By.CSS_SELECTOR,
|
||||
timeout=settings.LARGE_TIMEOUT)
|
||||
self.wait_for_text(text, selector="html", by=By.CSS_SELECTOR, timeout=settings.LARGE_TIMEOUT)
|
||||
|
||||
self.find_text(text, selector="html", by=By.CSS_SELECTOR,
|
||||
timeout=settings.LARGE_TIMEOUT)
|
||||
self.find_text(text, selector="html", by=By.CSS_SELECTOR, timeout=settings.LARGE_TIMEOUT)
|
||||
|
||||
self.assert_text_visible(text, selector="html", by=By.CSS_SELECTOR,
|
||||
timeout=settings.SMALL_TIMEOUT)
|
||||
self.assert_text_visible(text, selector="html", by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT)
|
||||
|
||||
self.assert_text(text, selector="html", by=By.CSS_SELECTOR,
|
||||
timeout=settings.SMALL_TIMEOUT)
|
||||
self.assert_text(text, selector="html", by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT)
|
||||
|
||||
self.assert_exact_text(text, selector="html", by=By.CSS_SELECTOR,
|
||||
timeout=settings.SMALL_TIMEOUT)
|
||||
self.assert_exact_text(text, selector="html", by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT)
|
||||
|
||||
########
|
||||
|
||||
|
@ -304,30 +293,23 @@ self.assert_link_text(link_text, timeout=settings.SMALL_TIMEOUT)
|
|||
|
||||
########
|
||||
|
||||
self.wait_for_partial_link_text(partial_link_text,
|
||||
timeout=settings.LARGE_TIMEOUT)
|
||||
self.wait_for_partial_link_text(partial_link_text, timeout=settings.LARGE_TIMEOUT)
|
||||
|
||||
self.find_partial_link_text(partial_link_text,
|
||||
timeout=settings.LARGE_TIMEOUT)
|
||||
self.find_partial_link_text(partial_link_text, timeout=settings.LARGE_TIMEOUT)
|
||||
|
||||
self.assert_partial_link_text(partial_link_text,
|
||||
timeout=settings.SMALL_TIMEOUT)
|
||||
self.assert_partial_link_text(partial_link_text, timeout=settings.SMALL_TIMEOUT)
|
||||
|
||||
########
|
||||
|
||||
self.wait_for_element_absent(selector, by=By.CSS_SELECTOR,
|
||||
timeout=settings.LARGE_TIMEOUT)
|
||||
self.wait_for_element_absent(selector, by=By.CSS_SELECTOR, timeout=settings.LARGE_TIMEOUT)
|
||||
|
||||
self.assert_element_absent(selector, by=By.CSS_SELECTOR,
|
||||
timeout=settings.SMALL_TIMEOUT)
|
||||
self.assert_element_absent(selector, by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT)
|
||||
|
||||
########
|
||||
|
||||
self.wait_for_element_not_visible(selector, by=By.CSS_SELECTOR,
|
||||
timeout=settings.LARGE_TIMEOUT)
|
||||
self.wait_for_element_not_visible(selector, by=By.CSS_SELECTOR, timeout=settings.LARGE_TIMEOUT)
|
||||
|
||||
self.assert_element_not_visible(selector, by=By.CSS_SELECTOR,
|
||||
timeout=settings.SMALL_TIMEOUT)
|
||||
self.assert_element_not_visible(selector, by=By.CSS_SELECTOR, timeout=settings.SMALL_TIMEOUT)
|
||||
|
||||
########
|
||||
|
||||
|
@ -362,11 +344,9 @@ self.switch_to_default_driver()
|
|||
|
||||
########
|
||||
|
||||
self.delayed_assert_element(selector, by=By.CSS_SELECTOR,
|
||||
timeout=settings.MINI_TIMEOUT)
|
||||
self.delayed_assert_element(selector, by=By.CSS_SELECTOR, timeout=settings.MINI_TIMEOUT)
|
||||
|
||||
self.delayed_assert_text(text, selector="html", by=By.CSS_SELECTOR,
|
||||
timeout=settings.MINI_TIMEOUT)
|
||||
self.delayed_assert_text(text, selector="html", by=By.CSS_SELECTOR, timeout=settings.MINI_TIMEOUT)
|
||||
|
||||
self.process_delayed_asserts()
|
||||
```
|
||||
|
|
|
@ -4,16 +4,16 @@ from seleniumbase import BaseCase
|
|||
class MyTestClass(BaseCase):
|
||||
|
||||
def test_basic(self):
|
||||
self.open('http://xkcd.com/353/')
|
||||
self.open("https://xkcd.com/353/")
|
||||
self.assert_element('img[alt="Python"]')
|
||||
self.click('a[rel="license"]')
|
||||
self.assert_text('free to copy', 'div center')
|
||||
self.open("http://xkcd.com/1481/")
|
||||
self.assert_text("free to copy", "div center")
|
||||
self.open("https://xkcd.com/1481/")
|
||||
title = self.get_attribute("#comic img", "title")
|
||||
self.assert_true("86,400 seconds per day" in title)
|
||||
self.click('link=Blag')
|
||||
self.assert_text('The blag of the webcomic', 'h2')
|
||||
self.update_text('input#s', 'Robots!\n')
|
||||
self.assert_text('Hooray robots!', '#content')
|
||||
self.open('http://xkcd.com/1319/')
|
||||
self.assert_exact_text('Automation', '#ctitle')
|
||||
self.click("link=Blag")
|
||||
self.assert_text("The blag of the webcomic", "h2")
|
||||
self.update_text("input#s", "Robots!\n")
|
||||
self.assert_text("Hooray robots!", "#content")
|
||||
self.open("https://xkcd.com/1319/")
|
||||
self.assert_exact_text("Automation", "#ctitle")
|
||||
|
|
|
@ -6,6 +6,6 @@
|
|||
"start": "node ./bin/www"
|
||||
},
|
||||
"dependencies": {
|
||||
"express": "~4.16.4"
|
||||
"express": "~4.17.1"
|
||||
}
|
||||
}
|
|
@ -10,7 +10,7 @@ urllib3==1.25.3
|
|||
requests>=2.22.0
|
||||
selenium==3.141.0
|
||||
pluggy>=0.12.0
|
||||
pytest>=4.6.3
|
||||
pytest>=4.6.4
|
||||
pytest-cov>=2.7.1
|
||||
pytest-forked>=1.0.2
|
||||
pytest-html>=1.21.1
|
||||
|
|
|
@ -79,22 +79,22 @@ def main():
|
|||
data.append("class MyTestClass(BaseCase):")
|
||||
data.append("")
|
||||
data.append(" def test_basic(self):")
|
||||
data.append(" self.open('https://xkcd.com/353/')")
|
||||
data.append(' self.open("https://xkcd.com/353/")')
|
||||
data.append(" self.assert_element('img[alt=\"Python\"]')")
|
||||
data.append(" self.click('a[rel=\"license\"]')")
|
||||
data.append(" self.assert_text('free to copy', 'div center')")
|
||||
data.append(" self.open(\"https://xkcd.com/1481/\")")
|
||||
data.append(' self.assert_text("free to copy", "div center")')
|
||||
data.append(' self.open("https://xkcd.com/1481/")')
|
||||
data.append(
|
||||
" title = self.get_attribute(\"#comic img\", \"title\")")
|
||||
data.append(
|
||||
" self.assert_true(\"86,400 seconds per day\" in title)")
|
||||
data.append(" self.click('link=Blag')")
|
||||
data.append(' self.click("link=Blag")')
|
||||
data.append(
|
||||
" self.assert_text('The blag of the webcomic', 'h2')")
|
||||
data.append(" self.update_text('input#s', 'Robots!\\n')")
|
||||
data.append(" self.assert_text('Hooray robots!', '#content')")
|
||||
data.append(" self.open('https://xkcd.com/1319/')")
|
||||
data.append(" self.assert_exact_text('Automation', '#ctitle')")
|
||||
' self.assert_text("The blag of the webcomic", "h2")')
|
||||
data.append(' self.update_text("input#s", "Robots!\\n")')
|
||||
data.append(' self.assert_text("Hooray robots!", "#content")')
|
||||
data.append(' self.open("https://xkcd.com/1319/")')
|
||||
data.append(' self.assert_exact_text("Automation", "#ctitle")')
|
||||
data.append("")
|
||||
file_path = "%s/%s" % (dir_name, "my_first_test.py")
|
||||
file = codecs.open(file_path, "w+", "utf-8")
|
||||
|
|
|
@ -1403,7 +1403,8 @@ class BaseCase(unittest.TestCase):
|
|||
Other element would receive the click: ... } """
|
||||
if page_utils.is_xpath_selector(selector):
|
||||
by = By.XPATH
|
||||
self.find_element(selector, by=by, timeout=settings.SMALL_TIMEOUT)
|
||||
self.wait_for_element_visible(
|
||||
selector, by=by, timeout=settings.SMALL_TIMEOUT)
|
||||
try:
|
||||
selector = self.convert_to_css_selector(selector, by=by)
|
||||
except Exception:
|
||||
|
@ -1439,7 +1440,7 @@ class BaseCase(unittest.TestCase):
|
|||
scroll - the option to scroll to the element first (Default: True)
|
||||
"""
|
||||
selector, by = self.__recalculate_selector(selector, by)
|
||||
element = self.find_element(
|
||||
element = self.wait_for_element_visible(
|
||||
selector, by=by, timeout=settings.SMALL_TIMEOUT)
|
||||
if scroll:
|
||||
self.__slow_scroll_to_element(element)
|
||||
|
@ -1725,7 +1726,7 @@ class BaseCase(unittest.TestCase):
|
|||
def save_element_as_image_file(self, selector, file_name, folder=None):
|
||||
""" Take a screenshot of an element and save it as an image file.
|
||||
If no folder is specified, will save it to the current folder. """
|
||||
element = self.find_element(selector)
|
||||
element = self.wait_for_element_visible(selector)
|
||||
element_png = element.screenshot_as_png
|
||||
if len(file_name.split('.')[0]) < 1:
|
||||
raise Exception("Error: file_name length must be > 0.")
|
||||
|
@ -1995,7 +1996,7 @@ class BaseCase(unittest.TestCase):
|
|||
Defaults to "text" if option_by is unspecified or unknown. """
|
||||
if page_utils.is_xpath_selector(dropdown_selector):
|
||||
dropdown_by = By.XPATH
|
||||
element = self.find_element(
|
||||
element = self.wait_for_element_visible(
|
||||
dropdown_selector, by=dropdown_by, timeout=timeout)
|
||||
self.__demo_mode_highlight_if_active(dropdown_selector, dropdown_by)
|
||||
pre_action_url = self.driver.current_url
|
||||
|
@ -2009,7 +2010,7 @@ class BaseCase(unittest.TestCase):
|
|||
except (StaleElementReferenceException, ENI_Exception):
|
||||
self.wait_for_ready_state_complete()
|
||||
time.sleep(0.05)
|
||||
element = self.find_element(
|
||||
element = self.wait_for_element_visible(
|
||||
dropdown_selector, by=dropdown_by, timeout=timeout)
|
||||
if option_by == "index":
|
||||
Select(element).select_by_index(option)
|
||||
|
@ -2147,6 +2148,14 @@ class BaseCase(unittest.TestCase):
|
|||
return page_actions.wait_for_element_present(
|
||||
self.driver, selector, by, timeout)
|
||||
|
||||
def get_element(self, selector, by=By.CSS_SELECTOR,
|
||||
timeout=settings.LARGE_TIMEOUT):
|
||||
""" Same as wait_for_element_present() - returns the element.
|
||||
The element does not need be visible (it may be hidden). """
|
||||
if self.timeout_multiplier and timeout == settings.LARGE_TIMEOUT:
|
||||
timeout = self.__get_new_timeout(timeout)
|
||||
return self.wait_for_element_present(selector, by=by, timeout=timeout)
|
||||
|
||||
def assert_element_present(self, selector, by=By.CSS_SELECTOR,
|
||||
timeout=settings.SMALL_TIMEOUT):
|
||||
""" Similar to wait_for_element_present(), but returns nothing.
|
||||
|
@ -3055,7 +3064,7 @@ class BaseCase(unittest.TestCase):
|
|||
def __highlight_with_assert_success(
|
||||
self, message, selector, by=By.CSS_SELECTOR):
|
||||
selector, by = self.__recalculate_selector(selector, by)
|
||||
element = self.find_element(
|
||||
element = self.wait_for_element_visible(
|
||||
selector, by=by, timeout=settings.SMALL_TIMEOUT)
|
||||
try:
|
||||
selector = self.convert_to_css_selector(selector, by=by)
|
||||
|
|
4
setup.py
4
setup.py
|
@ -17,7 +17,7 @@ except IOError:
|
|||
|
||||
setup(
|
||||
name='seleniumbase',
|
||||
version='1.24.0',
|
||||
version='1.24.1',
|
||||
description='Reliable Browser Automation & Testing Framework',
|
||||
long_description=long_description,
|
||||
long_description_content_type='text/markdown',
|
||||
|
@ -64,7 +64,7 @@ setup(
|
|||
'requests>=2.22.0',
|
||||
'selenium==3.141.0',
|
||||
'pluggy>=0.12.0',
|
||||
'pytest>=4.6.3',
|
||||
'pytest>=4.6.4', # Keep at >=4.6.4 for Python 2 compatibility
|
||||
'pytest-cov>=2.7.1',
|
||||
'pytest-forked>=1.0.2',
|
||||
'pytest-html>=1.21.1',
|
||||
|
|
Loading…
Reference in New Issue