Python 自动化测试

 

 

使用Python3.7 版本

 

# coding=utf-8
# coding=utf-8
from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as ec
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.support.ui import Select


class PySele(object):
    # 初始化浏览器
    def __init__(self, brower):
        if brower == 'firefox' or brower == 'Firefox' or brower == 'f' or brower == 'F':
            deriver = webdriver.Firefox()
        elif brower == 'Ie' or brower == 'ie' or brower == 'i' or brower == 'I':
            deriver = webdriver.Ie()
        elif brower == 'Chrome' or brower == 'chrome' or brower == 'Ch' or brower == 'ch':
            deriver = webdriver.Chrome()
        # 不开开浏览器
        elif brower == 'NotChrome' or brower == 'notchrome' or brower == 'No' or brower == 'no':
            option = webdriver.ChromeOptions()
            option.add_argument("headless")
            deriver = webdriver.Chrome(chrome_options=option)
        elif brower == 'PhantomJS' or brower == 'phantomjs' or brower == 'ph' or brower == 'phjs':
            deriver = webdriver.PhantomJS()
        elif brower == 'Edge' or brower == 'edge' or brower == 'Ed' or brower == 'ed':
            deriver = webdriver.Edge()
        elif brower == 'Opera' or brower == 'opera' or brower == 'op' or brower == 'OP':
            deriver = webdriver.Opera()
        elif brower == 'Safari' or brower == 'safari' or brower == 'sa' or brower == 'saf':
            deriver = webdriver.Safari()
        else:
            raise NameError('只能输入firefox,Ie,Chrome,PhantomJS,Edge,Opera,Safari')
        self.driver = deriver

    def element(self, fangfa, dingwei):  # 定位
        if fangfa == 'id':
            element = self.driver.find_element_by_id(dingwei)
        elif fangfa == "name":
            element = self.driver.find_element_by_name(dingwei)
        elif fangfa == "class":
            element = self.driver.find_element_by_class_name(dingwei)
        elif fangfa == "link_text":
            element = self.driver.find_element_by_link_text(dingwei)
        elif fangfa == "xpath":
            element = self.driver.find_element_by_xpath(dingwei)
        elif fangfa == "tag":
            element = self.driver.find_element_by_tag_name(dingwei)
        elif fangfa == "css":
            element = self.driver.find_element_by_css_selector(dingwei)
        else:
            raise NameError("Please enter the  elements,'id','name','class','link_text','xpath','css','tag'.")
        return element

    # 组定option位
    def elements(self, fangfa, dingwei):
        if fangfa == 'id':
            element = self.driver.find_elements_by_id(dingwei)
        elif fangfa == "name":
            element = self.driver.find_elements_by_name(dingwei)
        elif fangfa == "class":
            element = self.driver.find_elements_by_class_name(dingwei)
        elif fangfa == "link_text":
            element = self.driver.find_elements_by_link_text(dingwei)
        elif fangfa == "xpath":
            element = self.driver.find_elements_by_xpath(dingwei)
        elif fangfa == "tag":
            element = self.driver.find_elements_by_tag_name(dingwei)
        elif fangfa == "css":
            element = self.driver.find_elements_by_css_selector(dingwei)
        else:
            raise NameError("Please enter the  elements,'id','name','class','link_text','xpath','css','tag'.")
        return element

    # 等待
    def element_wait(self, fangfa, dingwei, wati=3):

        if fangfa == "id":
            WebDriverWait(self.driver, wati, 1).until(ec.presence_of_element_located((By.ID, dingwei)))
        elif fangfa == "name":
            WebDriverWait(self.driver, wati, 1).until(ec.presence_of_element_located((By.NAME, dingwei)))
        elif fangfa == "class":
            WebDriverWait(self.driver, wati, 1).until(ec.presence_of_element_located((By.CLASS_NAME, dingwei)))
        elif fangfa == "link_text":
            WebDriverWait(self.driver, wati, 1).until(ec.presence_of_element_located((By.LINK_TEXT, dingwei)))
        elif fangfa == "xpath":
            WebDriverWait(self.driver, wati, 1).until(ec.presence_of_element_located((By.XPATH, dingwei)))
        elif fangfa == "css":
            WebDriverWait(self.driver, wati, 1).until(ec.presence_of_element_located((By.CSS_SELECTOR, dingwei)))
        else:
            raise NameError("Please enter the  elements,'id','name','class','link_text','xpath','css'.")

    # 打开网页
    def open(self, url):
        self.driver.get(url)

    # 最大化浏览器
    def make_maxwindow(self):
        self.driver.maximize_window()

    # 设置窗口
    def set_winsize(self, wide, hight):
        self.driver.set_window_size(wide, hight)

    # 发送内容
    def send_key(self, fangfa, dingwei, text):
        self.element(fangfa, dingwei)
        e1 = self.element(fangfa, dingwei)
        e1.clear()
        e1.send_keys(text)

    # 清空
    def clear(self, fangfa, dingwei):
        self.element_wait(fangfa, dingwei)
        e1 = self.element(fangfa, dingwei)
        e1.clear()

    # 单击
    def clic(self, fangfa, dingwei):
        self.element_wait(fangfa, dingwei)
        e1 = self.element(fangfa, dingwei)
        e1.click()

    # 右击
    def right_click(self, fangfa, dingwei):
        self.element_wait(fangfa, dingwei)
        e1 = self.element(fangfa, dingwei)
        ActionChains(self.driver).context_click(e1).perform()

    # 移动到
    def move_element(self, fangfa, dingwei):
        self.element_wait(fangfa, dingwei)
        e1 = self.element(fangfa, dingwei)
        ActionChains(self.driver).move_to_element(e1).perform()

    # 双击
    def double_click(self, dingwei, fangfa):
        self.element_wait(fangfa, dingwei)
        e1 = self.element(fangfa, dingwei)
        ActionChains(self.driver).double_click(e1).perform()

    # 从e1到e2
    def drag_and_drop(self, fangfa1, e1, fangfa2, e2):
        self.element_wait(fangfa1, e1)
        eme1 = self.element(fangfa1, e1)
        self.element_wait(fangfa2, e2)
        eme2 = self.element(fangfa2, e2)
        ActionChains(self.driver).drag_and_drop(eme1, eme2).perform()

    # 点击文字
    def click_text(self, text):
        self.driver.find_element_by_link_text(text).click()

    # 关闭
    def close(self):
        self.driver.close()

    # 退出
    def kill(self):
        self.driver.quit()

    # 提交
    def sublimit(self, fangfa, dingwei):
        self.element_wait(fangfa, dingwei)
        e1 = self.element(fangfa, dingwei)
        e1.sublimit()

    # 刷新
    def f5(self):
        self.driver.refresh()

    # 执行js
    def js(self, sprit):
        self.driver.execute_script(sprit)

    def get_attribute(self, fangfa, dingwei, attribute):
        e1 = self.element(fangfa, dingwei)
        return e1.get_attribute(attribute)

    def get_text(self, fangfa, dingwei):
        self.element_wait(fangfa, dingwei)
        e1 = self.element(fangfa, dingwei)
        return e1.text

    def get_is_dis(self, fangfa, dingwei):
        self.element_wait(fangfa, dingwei)
        e1 = self.element(fangfa, dingwei)
        return e1.is_displayed()

    # 获取title
    # def get_title(self, fangfa, dingwei):
    def get_title(self):
        return self.driver.title

    # 获取当前页面url
    def get_url(self):
        return self.driver.current_url

    # 截屏
    def get_screen(self, file_path):
        self.driver.get_screenshot_as_file(file_path)

    # 等待
    def wait(self, fangfa, dingwei):
        self.driver.implicitly_wait((fangfa, dingwei))

    # 允许
    def accpet(self):
        self.driver.switch_to.alert.accept()

    def dismiss_alert(self):
        self.driver.switch_to.alert.dismiss()

    # 切换iframe
    def switch_to_frame(self, fangfa, dingwei):
        self.element_wait(fangfa, dingwei)
        if1 = self.element(fangfa, dingwei)
        self.driver.switch_to.frame(if1)

    def frame(self, dingwei):
        self.driver.switch_to.frame(dingwei)

    # 切出iframe
    def out_iframe(self):
        self.driver.switch_to.default_content()

    # 下拉框
    # index
    def select_index(self, fangfa, dingwei, index):
        Select(self.element(fangfa, dingwei)).select_by_index(index)

    # value
    def select_value(self, fangfa, dingwei, value):
        Select(self.element(fangfa, dingwei)).select_by_value(value)

    # text
    def select_text(self, fangfa, dingwei, text):
        Select(self.element(fangfa, dingwei)).select_by_visible_text(text)

    # option
    def select_option(self, fangfa, dingwei):
        self.element(fangfa, dingwei).select_by_option()

    # 弹窗
    def popup(self):
        self.driver.switch_to.alert()

    # 获取弹窗信息
    def popup_text(self):
        return self.popup().text

    # 隐性等待
    def waiting_y(self, times):
        self.driver.implicitly_wait(times)

    # 判断元素是否存在
    # noinspection PyBroadException
    def iselementexist(self, fangfa, dingwei):
        flag = True
        try:
            self.element(fangfa, dingwei)
            return flag
        except Exception:
            flag = False
            return flag

使用示例

 

from public import PySele
import time

if __name__ == '__main__':
    d = PySele(brower="Chrome")
    d.open(url="http://www.baidu.com")
    d.element(fangfa="name", dingwei="wd").send_keys("111")
    d.double_click(fangfa="id", dingwei="su")
    time.sleep(2)

    tips = d.element(fangfa="class", dingwei="n").text
    print(tips)

 

下载Chromedriver    
下载地址:http://chromedriver.storage.googleapis.com/index.html

 

复制到Python安装根目录

 

 

 

 

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值