I have below page object want to simplify it:
from selenium.webdriver.common.by import By
from support.utlis import DriverUtil
class LoginPage:
def __init__(self):
self.driver = DriverUtil.get_driver()
def username_input_field(self):
return self.driver.find_element(By.CSS_SELECTOR, 'input[name="txtUsername"]')
def password_input_field(self):
return self.driver.find_element(By.CSS_SELECTOR, 'input[name="txtPassword"]')
def login_button(self):
return self.driver.find_element(By.CSS_SELECTOR, 'input[value="Login"]')
I want to have a single elementMap dict variable which can pass into class. Is that possible? Like below code. I tried pass it as self.elements_map = elementsMap. Not working.
from selenium.webdriver.common.by import By
from support.utlis import DriverUtil
elementsMap = {
'usernameInputField': 'input[name="txtUsername"]',
'passwordInputField': 'input[name="txtPassword"]',
'login_button': 'input[value="Login"]'
}
class LoginPage:
def __init__(self):
self.driver = DriverUtil.get_driver()
self.elements_map = elementsMap
def username_input_field(self):
return self.driver.find_element(By.CSS_SELECTOR, self.elements_map[usernameInputField])
def password_input_field(self):
return self.driver.find_element(By.CSS_SELECTOR, self.elements_map[passwordInputField])
def login_button(self):
return self.driver.find_element(By.CSS_SELECTOR, self.elements_map[login_button])
I cannot find a way to pass the dict key/value pair into class. Need some help. Thanks!
You need to provide the dict key as a string in your field getter functions:
from selenium.webdriver.common.by import By
from support.utlis import DriverUtil
elementsMap = {
'usernameInputField': 'input[name="txtUsername"]',
'passwordInputField': 'input[name="txtPassword"]',
'login_button': 'input[value="Login"]'
}
class LoginPage:
def __init__(self):
self.driver = DriverUtil.get_driver()
self.elements_map = elementsMap
def username_input_field(self):
return self.driver.find_element(By.CSS_SELECTOR, self.elements_map['usernameInputField'])
def password_input_field(self):
return self.driver.find_element(By.CSS_SELECTOR, self.elements_map['passwordInputField'])
def login_button(self):
return self.driver.find_element(By.CSS_SELECTOR, self.elements_map['login_button'])
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.