基础方法封装
'''
以下展示:
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()