首页 > 其他分享 >selenium基础

selenium基础

时间:2023-08-13 22:11:26浏览次数:32  
标签:el 基础 self driver cursor locator def selenium

Selenium

框架

Python+Selenium+Pytest+Mysql+openpyxl

image-20230812142939912

配置相关

import pathlib


class Config():
    # 当前的文件路径
    current_path = pathlib.Path(__file__).absolute()
    # root
    root = current_path.parent.parent
    # 驱动路径
    driver_path = root / "drivers/chromedriver.exe"  # 谷歌浏览器驱动位置
    # 默认等待时间
    default_timeout = 5
    # 域名
    host = "测试网站"
    # 默认加载策略
    load_strategy = "eager"
    # 用户名
    user_mobile = "手机号"
    # 密码
    passwd = "密码"

    # Database
    database = dict(host="数据库IP地址",
                    port=端口号,
                    user="用户名",
                    password="密码",
                    database="数据库")

测试夹具-驱动封装

import pytest
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from config.setting import Config


@pytest.fixture()
def driver():
    driver_path = Config.driver_path  # 浏览器驱动地址
    option = Options()
    option.page_load_strategy = Config.load_strategy  # 页面加载策略
    d = webdriver.Chrome(executable_path=driver_path, options=option)
    d.implicitly_wait(Config.default_timeout)
    yield d
    time.sleep(3)
    d.quit()

Mysql数据库封装

import pymysql
from pymysql.cursors import DictCursor
from config.setting import Config


class DB:
    def __init__(self):
        self.conn = pymysql.connect(**Config.database)

    def query_one(self, sql):
        cursor = self.conn.cursor(cursor=DictCursor)
        cursor.execute(sql)
        result = cursor.fetchone()
        cursor.close()
        return result

    def query_all(self, sql):
        cursor = self.conn.cursor(cursor=DictCursor)
        cursor.execute(sql)
        result = cursor.fetchall()
        cursor.close()
        return result

    def close(self):
        """关闭数据库"""
        self.conn.close()

openpyxl封装

"""专门去操作Excel表格的"""
import openpyxl


def read_excel(file, sheet_name):
    workbook = openpyxl.load_workbook(file)
    sheet = workbook[sheet_name]
    items = list(sheet.values)
    title = items[0]
    new_list = [dict(zip(title, item)) for item in items[1:]]
    return new_list

Selenium常用操作方法

from selenium.webdriver import Chrome, ActionChains, Keys


class BasePage(object):

    def __init__(self, driver: Chrome):
        self.driver = driver

    def goto(self, url):
        """访问URL"""
        self.driver.get(url)

    def click(self, locator):
        """封装浏览器的点击操作"""
        el = self.driver.find_element(*locator)
        try:
            el.click()
        except:
            ActionChains(self.driver).click(el).perform()

    def send_keys(self, words, locator=None):
        # 输入
        if locator:
            el = self.driver.find_element(*locator)
            # 相当于 ActionChains 里面的 send_keys_to_element
            # 先点击元素el,再然后在输入内容,先会有光标的聚焦
            el.send_keys(words)
            return
        else:
            ActionChains(self.driver).send_keys(words).perform()

    def assert_text_equal(self, locator, expected):
        """断言元素的文本"""
        el = self.driver.find_element(*locator)
        assert el.text == expected

    # 把所有的浏览器常用操作都封装成现成的方法直接使用
    def double_click(self, locator):
        """双击"""
        el = self.driver.find_element(*locator)
        ActionChains(self.driver).double_click(el).perform()

    def drag_and_drop(self, locator1, locator2):
        """鼠标拖动"""
        el1 = self.driver.find_element(*locator1)
        el2 = self.driver.find_element(*locator2)
        ActionChains(self.driver).drag_and_drop(el1, el2).perform()

    def press_enter(self):
        """回车"""
        ActionChains(self.driver).send_keys(Keys.ENTER).perform()

    def copy(self):
        """复制"""
        action = ActionChains(self.driver)
        action.key_down(Keys.CONTROL).send_keys("c").key_up(Keys.CONTROL).perform()

    def paste(self):
        """粘贴"""
        action = ActionChains(self.driver)
        action.key_down(Keys.CONTROL).send_keys("v").key_up(Keys.CONTROL).perform()

    def scroll_to_bottom(self):
        """滚动到窗口底部"""
        script = 'window.scrollTo(0, document.body.scrollHeight)'
        self.driver.execute_script(script)

    def switch_to_iframe(self, locator):
        """切换iframe"""
        self.driver.switch_to.frame(*locator)

标签:el,基础,self,driver,cursor,locator,def,selenium
From: https://www.cnblogs.com/HollowPan/p/17627391.html

相关文章

  • 2-了解单片机基础功能
    目录一.阅读STM32F103C8DataSheet一.阅读STM32F103C8DataSheet1.芯片优势2.内核以及存储器3.时钟,复位和电源管理4.DMA通道示意图5.引脚定义图6.调试模式和定时器7.看门狗(程序正常运行会喂狗,一旦程序跑飞就不能喂狗,看门狗就会复位)8.I2C......
  • Java基础之抽象类
    1、介绍和使用 ......
  • 2023年多校联训NOIP层测试7+【LGR-149-Div.3】洛谷基础赛 #2 & qw Round -1
    2023年多校联训NOIP层测试7,集训欢乐赛,绝对欢乐,童叟无欺赛时在回家的路上+睡觉,所以没打。\(T1\)近似ybtOJ2049:【例5.19】字符串判等本题少了对空格的判断,水题。PS:题面和题解中都写了文件输入输出,测评时没有文件输入输出是几个意思,艹。#include<bits/stdc++.h>usingname......
  • python基础之列表解析
    python列表解析:是一个让人欣喜的术语,你可以在一行使用一个for循环将所有的值放在一个列表之中。python列表解析属于python的迭代中的一种,相比pythonfor循环速度会快很多。example:a=[x+2forxinrange(10)]printa输出的结果:[2,3,4,5,6,7,8,9,10,11]这个例子的执行过......
  • linux笔记-基础命令
    关机命令shutdown-hnow/10 #现在/10分钟shutdown-c #取消shutdown-r 5 #重启halt #直接关机reboot #直接重启 poweroff #直接关机检查网卡地址配置ipaddressshowipa图形界面修改网卡地址信息nmtui注销exit创建目录mkdirmkdir-p #......
  • 【Freertos基础入门】深入浅出freertos互斥量
    @TOC前言FreeRTOS是一款开源的实时操作系统,提供了许多基本的内核对象,其中包括互斥锁(Mutex)。互斥锁是一种常用的同步机制,用于确保在同一时间内只有一个任务可以访问共享资源,防止竞态条件等并发问题。本文将介绍FreeRTOS中的互斥锁的使用方法和注意事项。一、互斥量是什么?当多个任务......
  • JavaScript基础知识
    JavaScript基础知识1、简介1、javascript是一面向对象的解释型语言,是实现动态前端页面的,它是基于对象和事件驱动并具有相对安全性的客户端脚本语言。它的主要目的是,验证发往服务器端的数据、增加Web互动、加强用户体验度。2、javascript体系由ECMAScript、DOM、BOM组成。2、......
  • Oracle基础知识
    Oracle基础知识1、Oracle安装安装oracle注意事项:1、关闭杀毒软件以及电脑管家。2、电脑主机名为英文。3、安装路径不要出现中文或者中文符号。4、如果没有正常安装成功,安装程序也是卸载程序,直接卸载,重装。卸载后重启电脑后再重新安装。测试:cmd--->sqlplus-->用户名、密码......
  • 1信息安全基础知识
    信息安全包括5个基本要素:机密性:“不泄露”完整性“不能进行更改”可用性“合法许可用防护能够及时获取信息或服务的特性”可控性“控制授权范围内的i信息流向及行为方式可审查性出现安全问题提供调查的依据和手段信息安全范围包括设备安全、数据安全、内容安全和......
  • 统计指定日期之后的销量总数,基础牢不牢,看它就知道!
    1职场实例小伙伴们大家好,今天我们来考验一下大家对Excel基础知识掌握的牢不牢,问题是这样的:如何统计指定日期之后的销量总数?如下图所示:下图左表展示了某公司对应日期的某产品的销售量明细日数据,A列为日期,B列为销售量。我们想要在下图右表中统计4月8日之后的销售量汇总情况。2解题思......