import os

from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWait


class Base():
    def __init__(self, driver):
        self.driver = driver

        # 查找元素方法 封装--》此方法给click、input等方法使用

    def base_find_element(self, loc, timeout=30, poll=0.5):
        return WebDriverWait(self.driver, timeout, poll_frequency=poll).until(lambda x: x.find_element(*loc))

        # 点击方法 封装

    def base_click(self, loc):
        self.base_find_element(loc).click()

        # 输入方法 封装

    def base_input(self, loc, text):
        # 定位输入框
        el = self.base_find_element(loc)
        # 先清除操作
        el.clear()
        # 输入内容
        el.send_keys(text)


        # 截图方法 封装

    def base_get_screenshot(self):
        # 组合图片保存路径及文件名
        # 注意：调用的时候使用的是pytest,一定要路径问题 建议使用os.getcwd（）
        img_path = os.getcwd() + os.sep + "image" + os.sep + "faild.png"
        self.driver.get_screenshot_as_file(img_path)

        # 获取toast 封装
    def base_get_toast(self, message):
            msg = By.XPATH, "//*[contains(@text,'" + message + "')]"
            return self.base_find_element(msg, poll=0.1).text

        # 获取文本内容
    def base_get_text(self,loc):
        return self.base_find_element(loc).text

        # 滑动
    def base_drag_and_drop(self, el1, el2):
        self.driver.drag_and_drop(el1, el2)



    # 封装传入文本
    def base_xpath_text_click(self,text):
        loc = By.XPATH,"//*[contains(@text,'"+text+"')]"
        self.base_find_element(loc).click()


    # 封一个返回所有列表文本的方法
    def base_get_list_text(self,loc):
        return [i.text for i in self.base_find_element(loc)]
