selenium+pytest+方法封装+元素是否可操作判断

基础方法封装

'''
    以下展示:
        1 关键字驱动+pytest编码实现。
'''
from selenium import webdriver
from time import sleep

# 定义类工具
class Webkeye:
    # 构造函数
    # 创建Webdrver驱动
    def __init__(self):
        self.driver = webdriver.Chrome()

    #访问url
    #说明:传入url,利用里面的方法打开url
    def open(self,url):
        self.driver.get(url)

    #退出
    #说明:利用本身函数退出,使用时界面用方法名即可
    def quit(self):
        self.driver.quit()

    #元素定位+元素是否可点击判断
    #说明:name传入的是元素定位的方式,一共有以下几点,填入小写方法。value传入的是元素的路径。传入值之后,会返回一个方法,使用这个方法用方法名即可。
    '''
    ID = "id"
    XPATH = "xpath"
    LINK_TEXT = "link text"
    PARTIAL_LINK_TEXT = "partial link text"
    NAME = "name"
    TAG_NAME = "tag name"
    CLASS_NAME = "class name"
    CSS_SELECTOR = "css selector"
    '''
    def locator(self,name,value):
        Count = 1
        while True:
            path = True
            sleep(1)
            Count += 1
            try:
                self.driver.find_element(name, value)
            except Exception:
                print("找不到元素")
                path = False
            if path == True:
                print("已找到元素,跳出循环")
                return self.driver.find_element(name,value)
            elif Count >= 20:
                print("寻找元素大于20秒,跳出循环")
                return self.driver.find_element(name,value)

    #输入
    #说明:输入之前需要进行元素定位,所以需要name和value。元素定位之后保存到一个变量中,然后再用这个变量输入信息。clear的意思是清除输入框里的东西。
    def input(self,name,value,txt):
        el = self.locator(name,value)
        el.clear()
        el.send_keys(txt)

    #点击
    def Click_lel(self,name, value):
        el = self.locator(name, value)
        el.click()

    #强制等待
    #说明:time_作为时间参数传入,然后利用sleep函数强制等待即可。
    def wait(self,time_):
        sleep(time_)

    #断言
    #说明:word作为文本关键字传入,需要转义,然后再拼接
    def assert_att(self,word):
        try:
            att = self.driver.find_element_by_xpath('//*[contains(text(),\"' + word + '\")]').text
            assert word in att
        except Exception as e:
            return e

    #窗口切换
    #说明:window_handles是获取所有窗口,witch_to.window是切换窗口。n是下坐标,0是第1个,1是第二个,以此类推。
    def switch(self,n):
        self.driver.switch_to.window(self.driver.window_handles[n])

    #关闭页签
    def close_switch(self,n):
        self.driver.switch_to.window(self.driver.window_handles[n])#切换到新页签
        self.driver.close()#关闭新页签
        self.driver.switch_to.window(self.driver.window_handles[0])#然后切换回原始页签

关键字驱动执行

# -*- coding:utf-8 -*-
# @time :2021-9-23 21:00
# @Author :lemon_huahua
# @File: test_file.py
import pytest
from class_001 import Webkeye #引入类方法
from time import sleep

def test_aa():
    wk = Webkeye()
    wk.open('https://www.baidu.com')
    wk.input('xpath','//input[@id="kw""]','hello world')
    wk.Click_lel('xpath','//input[@value="百度一下"]')
    sleep(5)

if __name__ == '__main__':
    pytest.main()

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

好度

你的鼓励是我最大的创作动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值