Initial commit - Selenium automation framework
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
import os
|
||||
from time import sleep
|
||||
from selenium.webdriver.support import expected_conditions as EC
|
||||
from selenium.common.exceptions import ElementClickInterceptedException
|
||||
from .config_reader import get_step_delay_seconds
|
||||
|
||||
STEP_DELAY_SECONDS = get_step_delay_seconds()
|
||||
|
||||
|
||||
class StepActions:
|
||||
|
||||
def __init__(self, driver, wait, test_context):
|
||||
|
||||
self.driver = driver
|
||||
self.wait = wait
|
||||
self.folder = test_context["folder"]
|
||||
self.test_context = test_context
|
||||
self.step = 1
|
||||
self.test_context.setdefault("steps", [])
|
||||
|
||||
def capture(self, name):
|
||||
|
||||
filename = f"{self.step:02d}_{name}.png"
|
||||
|
||||
path = os.path.join(self.folder, filename)
|
||||
|
||||
self.driver.save_screenshot(path)
|
||||
self.test_context["steps"].append(
|
||||
{
|
||||
"index": self.step,
|
||||
"name": name,
|
||||
"path": path,
|
||||
"status": "passed",
|
||||
}
|
||||
)
|
||||
|
||||
print(f"STEP {self.step}: {name}")
|
||||
|
||||
self.step += 1
|
||||
sleep(STEP_DELAY_SECONDS)
|
||||
|
||||
|
||||
def click(self, locator, name):
|
||||
|
||||
element = self.wait.until(
|
||||
EC.element_to_be_clickable(locator)
|
||||
)
|
||||
|
||||
self.driver.execute_script("arguments[0].scrollIntoView({block: 'center'});", element)
|
||||
|
||||
try:
|
||||
element.click()
|
||||
except ElementClickInterceptedException:
|
||||
self.driver.execute_script("arguments[0].click();", element)
|
||||
|
||||
self.capture(name)
|
||||
|
||||
|
||||
def type(self, locator, value, name):
|
||||
|
||||
element = self.wait.until(
|
||||
EC.visibility_of_element_located(locator)
|
||||
)
|
||||
|
||||
element.clear()
|
||||
element.send_keys(value)
|
||||
|
||||
self.capture(name)
|
||||
Reference in New Issue
Block a user