import re
import time
from selenium.common.exceptions import NoSuchElementException, TimeoutException
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.remote import switch_to
from selenium.webdriver.support.wait import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from common.read_file import ReadFile
from common.write_file import WriteFile
from config.setting_path import locate_path, case_data_path
from common.log import Get_log
class BasePage:
def __init__(self, driver):
self.driver = driver
# 日志
self.log = Get_log()
self.common_ele = ReadFile(locate_path).read_yml('common_element.yml')
def open(self, url):
return self.driver.get(url)
# 查找元素,传入方法和元素两个参数
def wait_element(self, ele):
try:
WebDriverWait(self.driver, 5, 0.5).until(EC.visibility_of_element_located(ele))
return True
except TimeoutException:
self.log.log_error("没有定位到元素{0}".format(ele))
return False
except Exception as e:
#self.log.log_error(e)
raise e
def wait_element_disappear(self, ele):
'''
wait element disappear
:param ele:
:return:
'''
try:
WebDriverWait(self.driver, 2, 0.5).until_not(EC.visibility_of_element_located(ele))
#self.log.log_info(EC.visibility_of_element_located(ele))
return True
except TimeoutException:
self.log.log_error("element doesn't disappear {0}".format(ele))
return False
except Exception as e:
raise e
def wait_window(self, handles):
'''
等到窗口打开
:param handles: 窗口句柄
:return:
'''
try:
WebDriverWait(self.driver, 5, 0.5).until(EC.new_window_is_opened(handles))
return True
except TimeoutException:
self.log.log_error("没有打开窗口:{0}".format(handles))
return False
except Exception as e:
raise e
def wait_alert(self):
'''
判斷頁面上是否存在alert,如果有就切換到alert並返回alert的內容
:return:
'''
try:
accept = WebDriverWait(self.driver, 5, 0.5).until(EC.alert_is_present())
return accept
except TimeoutException:
self.log.log_error("no alert")
return False
except Exception as e:
#self.log.log_error(e)
raise e
# 查找单个元素
def find_ele(self, ele):
if self.wait_element(ele):
try:
Python selenium二次封装
于 2023-02-07 15:39:29 首次发布