import time, os, unittest
from Log.Loging import Log
from selenium import webdriver as CS
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support import expected_conditions as EC
logger = Log()
class Base(unittest.TestCase):
nowTime = time.strftime("%Y-%m-%d.%H.%M.%S")
screenPath = os.path.join(os.path.dirname(os.path.dirname(__file__)), 'TestReport', 'Screen',
'WebElesError' + nowTime + '.png')
def __init__(self, driver):
self.driver = driver
def find_ele(self, *a):
try:
# ele=self.driver.findElement(*a)
WebDriverWait(self.driver, 10, 1).until(EC.visibility_of_element_located(a))
ele = self.driver.find_element(*a)
self.JS("arguments[0].scrollIntoView();", ele)
return ele
except:
self.driver.get_screenshot_as_file(self.screenPath)
finally:
ele = self.driver.find_element(*a)
self.JS("arguments[0].scrollIntoView();", ele)
return ele
def find_eles(self, *a):
try:
WebDriverWait(self.driver, 10).until(EC.visibility_of_element_located(a))
ele = self.driver.find_elements(*a)
return ele
except:
self.driver.get_screenshot_as_file(self.screenPath)
finally:
return self.driver.find_elements(*a)
def open(self, url):
return self.driver.get(url)
def close(self):
return self.driver.quit()
def input(self, loc, text):
return self.find_ele(*loc).send_keys(text)
def clear(self, loc):
return self.find_ele(*loc).clear()
def inputs(self, loc, n, text):
ele = self.find_eles(*loc)[n].send_keys(text)
self.JS("arguments[0].scrollIntoView();", ele)
return ele
def click(self, loc):
return self.find_ele(*loc).click()
def clicks(self, loc, n):
ele = self.find_eles(*loc)[n]
self.JS("arguments[0].scrollIntoView();", ele)
return ele.click()
def get_src(self, loc):
elements = self.find_eles(*loc)
word = []
for i in range(0, len(elements)):
word.append(elements[i].get_attribute('src'))
return word
def get_attribute(self, loc):
return self.find_ele(*loc).text
def get_attributes(self, loc):
elements = self.find_eles(*loc)
word = []
for i in range(0, len(elements)):
word.append(elements[i].text)
return word
def switch_window(self, i):
return self.driver.switch_to.window(self.driver.window_handles[i])
def refresh(self):
return self.driver.refresh()
def JS(self, *js):
return self.driver.execute_script(*js)
def switch_alert(self):
return self.driver.switch_to.alert()
def switch_frame(self, frame_name):
return self.driver.switch_to.frame(frame_name)
def switch_default(self):
return self.driver.switch_to.default_content()
def mouse(self, ele):
ActionChains(self.driver).move_to_element(self.find_ele(*ele)).perform()
class Browser():
def __init__(self):
"""
Linux: add_argument("--kiosk")
Windows: add_argument("--start-maximized")
"""
self.options = CS.ChromeOptions()
self.options.add_argument('--no-sandbox')
#self.options.add_argument('--headless')
self.options.add_argument('window-size=1920,1080')
# self.option.add_argument("--start-maximized")
self.driver = CS.Chrome(options=self.options)
self.driver.implicitly_wait(8)
self.driver.set_page_load_timeout(8)
self.driver.set_script_timeout(8)
BasePage基类相关方法封装
最新推荐文章于 2022-08-22 16:31:35 发布