您当前的位置:网站首页>hpv感染,Python和selenium完成webUI功用自动化测验结构!企业级项目!,番荔枝

hpv感染,Python和selenium完成webUI功用自动化测验结构!企业级项目!,番荔枝

2019-04-07 01:27:50 投稿作者:admin 围观人数:186 评论人数:0次

其实UI自动化和接口自动化结构的规划思路迥然不同,首要意图仍是别离事务代码和检验数据,到达代码的复用,进步检验用例的可保护性以及最最重要的减家常扣肉少人工劳动力。那么就开端直接看正文吧。

规划意图:

别离事务代码和检验数据,进步代码可保护性,完结自动化,削减重复劳动,终究到达“偷闲”的意图,哈哈哈哈哈~~ 哎呦,不好意思,一不小心暴露了本相。小编是真的在不苟言笑的写代码啦。

结构目录结构:

Python和selenium完结webUI功用自动化检验结构!企业级项目!

case:寄存具体的检验代码

comm:寄存共通的办法

file:寄存检验用例等检验进程中用到的检验数据

result:每次检验的log和检验报告的寄存方位

caseList:规则履行哪些检验

config:装备静态数据

readConfig:读取config文件内容

runAll:检验履行进口文件

一同来看整个结构的建立。

首要,要确保你的python现已装置了selenium包,假如你是用pip来办理自己的python环境的,那么你能够经过下面的指令来导入selenium模块:

pip install selenium

然后,你需求到网上去下载对应浏览器的驱动,这儿小编运用的是chrome浏览器,(chrome下载地址:http://chromedriver.storage.googleapis.com/index.html)。下载完结之后呢,将下载的浏览器驱动放到本地的python装置目录下,这样就能够直接在结构中运用了。至此,必备的条件都有了,咱们就能够开工啦。

这儿呢,咱们就只挑部分内容进行解说,桐城

私信小编001 获取此项目具体代码!

翻开浏览器:

from selenium import webdriver
class Driver:
def __init__(self):

self.brows别那么自豪er = webdriver.Chrome()
def open_browser(self):
"""
Do something for b大染坊rowser
:return: browser
"""
# 窗口最大化
self.browser.maximize_window()
# 翻开地址链接
url = 'http://www.baidu.com'
self.browser.get(url)
return self.browser
def close_browser(self):
"""
quit browser
:return:
"""
self.browser.quit()

从上面的代码能够看出,咱们进行了翻开/封闭浏览器的办法界说,只要简略的几行代码,当然了,这儿为了便利咱们观看,我把url地址直接写了出来,在实际操作时,咱们能够将其抽离出来,依据自己的需求,传入不同的url地址。这就藏着让咱们去自己完结吧。

一个简略的查找栗子:

from time import sleep
from selenium import webdriver
import unittest
class Login(unittest.TestCase):
def setUp(self):
self.driver = webdriver.Chrome()
# 窗口最大化
self.driver.ma忘却你的欢欣城ximize_window()
self.msg = 'selenium'
self.url = 'http://www.baidu.com'
def testSearch(self):
"""
test body
:return:
"""
# open browser
self.driver.get(self.url)
sleep(3)
# click search input
self.driver.find_element_by_id('kw').click()
sleep(1)
# input value
self.driver.find_element_by_id('kw').send_keys(self.msg)
sleep(1)
self.driver.find_element_by_id('su').click()
sleep(1)
def tearDown(self):
self.driver.close()
if __name__ == "__main__":
unittest.main()

在上面的代码里,咱们在百度里查找了 selenium,

selenium能够经过许多种办法来定位元素。这个读者能够自行学习。

咱们看到了,这便是UI检验的雏形,有了这个雏形,咱们就能够对它进行扩展,扩展,最终搭出结构来。

增加log日志:

在上面的基础上,咱们能够增加履行时输出的log日志。所以开端写log文件,并将巫夷人家它放在comm文件夹下,作为一起办法来用。

抽离出浏览器的相关操作:

咱们能够将对浏览器的操作剥离出来,独自放到一个文件中,这样既明晰,又避免了重复的代码操作。而且保护起来也比较便利。

from selenium import webdriver
from comm.Log import MyLog as Log
import readConfig
import threading
localReadConfig = readConfig.ReadConfig()
class Driver:
def __init__(self):
self.log = Log.get_log()
self.logger = self.log.get_logger()
self.browser = webdriver.Chrome()
def ohpv感染,Python和selenium完结webUI功用自动化检验结构!企业级项目!,番荔枝pen_browser(self, name1, name2):
"""
Do something for browser
:return: browser
"""
self.logger.info("Open browser")
# 窗口最大化
self.browser.maximize_window()
# 翻开地址链接
url = spreadlocalReadConfig.get_webServer(name1, name2)
self.browser.get(url)
return self.browser
def close_browser(self):
"""
quit browser
:return:
"""
self.browser.quit()
self.logger.info("Quit browser")
def get_driver(self):
"""hpv感染,Python和selenium完结webUI功用自动化检验结构!企业级项目!,番荔枝
get web driver
:return:
"""
retur官仙n self.browser
class MyDriver:
driver = None
mutex = threading.Lock()
def __init__(self):
pass
@staticmethod
def get_browser():
if MyDriverhpv感染,Python和selenium完结webUI功用自动化检验结构!企业级项目!,番荔枝.driver is None:
MyDriver.mutex.acquire()
MyDriver.driver = Driver()
MyDriver.mutex.release()
return MyDriver.driver
if __name__ == "__mai神探狄仁杰1n__":
driver = MyDriver.browser()
browser = driver.open_browser()

以上便是老王剥离出来的部分,而且将它放到了独自的线程中。

关于Element的那些事儿:

做过UI功用检验的朋友们应该都知道,元素是咱们检验最基本也是最重要的东西,认为它是咱们直接的操作目标,所以,处理好它们,咱们就会省掉许多的费事,所以呢,接下来,小编将会持续共享自己处理element的一些办法,期望能对咱们有所协助,假如哪位大神有更好的办法,请必定要通知小编哦!小编在此先谢过了!

class Element:
def __init__(self, activity_name, element_name):
self.driver1 = Driver.get_browser()hpv感染,Python和selenium完结webUI功用自动化检验结构!企业级项目!,番荔枝
self.driver = self.driver1.get_driver()
self.activity = activity_name
self.element = element_name
element_dict = get_el_dict(self.activity, self.element)
self.pathType = element_dict.get('pathType')
self.pathValue = element_dict.get('pathValue')
def is_exist(self):
"""
Determine element is exist
:return: TRUE OR FALSE
"""
try:
if self.pathType == 'ID':
self.driver.find_element_by_id孜孜不倦(self.pathValue)
return Truhpv感染,Python和selenium完结webUI功用自动化检验结构!企业级项目!,番荔枝e
if self.pathType == 'XPATH':
self.driver.find_elements_by_xpath(self.pathValue)
return True
if self.pathType == 'CLhpv感染,Python和selenium完结webUI功用自动化检验结构!企业级项目!,番荔枝ASSNAME':
self.driver.find_element_by_class_name(self.pathValue)
return True
if self.pathType == 'NAME':
self.driver.find_element_by_name(self.pathValue)
return True
except NoSuchElementException:
return False
def wait_element(self, wait_time):
"""
wait element appear in time
:param wait_time: wait time
:return: true or false
"""
time.sleep(wait_time)
if self.is_exist():
return True
else:
return False
def get_element(self):
"""
get element
:return: 尼玛坤爷element
"""
try:
if self.pathType == 'ID':
element = self.driver.find_element_by_id(self.pathValue)
return element
if self.pathType == 'XPATH':
element = self.dr草酸艾司西酞普兰片iver.find_elements_by_xpath(self.pathValue)
return element
if self.pathType == 'CLASSNAME':
element = self.driver.find_element_by_class_name(self.pathValue)
return element
if self.pathType == 'NAME':
element = naself.driver.find_element_by_name(self.pathValue)
return element
except NoSuchElementException:
return None
def get_element_by_index(self, index):
"""
get element by index
:param index: index
:return: element
"""
try:
if self.pathType == 'ID':
element = self.driver.find_element_by_id(self.pathValue)
return element[index]
if self.pathType == 'XPATH':
element = self.driver.find_elements_by_xpath(self.pathValue)
return element[index]
if self.pathType == 'CLASSNAME':
element = self.driver.find_element_by_class_name(self.pathValue)
return element[index]
if self.pathType == 'NAME':
element = self.driver.find_element_by_name(self.pathValue)
return element[index]
except NoSuchElementException:
return None
def get_element_list(self):
"""
get element list
:return: element list
"""
try:
if self.pathType == 'ID':
element_list = self.driver.find_element_by_id(self.pathV音响品牌alue)
return element_list
if self.pathType == 'XPATH':
element_list = self.driver.find_elements_by_xpath(self.pathValue)
return element_list
if self.pathType == 'CLASSNAME':
element_list = self.driver.find_element_by_class_name(self.pathValue)
return element_list
if self.pathType == 'NAME':耀莱集团綦建虹女儿
element_list = self.driver.find_element_by_name(self.pathValue)
return element_list
except NoSuchElementException:
return None
def click(self):
"""
click element
:return:
"""
element = self.get_element()
time.sleep(1)
element.click()
def send_key(self, key):
"""
input key
:param key: input value
:return:
"""
element =捕俘拳全套教育视频 self.get_element()
time.sleep(1)
element.clear()
element.send_keys(key)
def input_keys(self, index, key):
"""
By index send key
:param index: index
:param key: key
:return:
"""
element = self.get_element_by_index(index)
time.sleep(1)
element.clear()
element.send_keys(key)
def get_text_value(self):
"""
get attribute
:return:
"""
element hpv感染,Python和selenium完结webUI功用自动化检验结构!企业级项目!,番荔枝= self.get_element()
value = element.get_attribute('text')
return str(value)

这是小编写的,现在能用到的关于element的办法了,累觉不爱啊~

但是,日子还要持续,作业还未完结。所以,请让我讲完剩余的代反击码吧!!!

那些让人费心的检验数据文件:

每一个好的检验,都离不开一份好的检验用例数据,那么,这么多的数据,咱们要怎样进行办理才干既不乱又便利今后对数据进行更改保护呢?下面,小编就要通知朋友们一个重磅音讯,敲黑板!!!

其实,小编也不知道有什么好办法,小编便是运用excel文件来对检验用例进行统一办理闹太套是什么意思的。请看下面:

Python和selenium完结webUI功用自动化检验结构!企业级项目!

方式便是这么个方式,内容就随意你们怎样修改了。究竟我也只能帮你们到这儿了。

其实,出来检验用例,还有一个数量巨大的数据集体,快猜猜它们是谁???

当当当,答案便是:元素定位的数据,包含:id,name,classname,xpath等等,这些数据但是咱们在检验进程中找到页面元素的不二法门哦。。西柚。所以各位朋友必定要注意啦,必定要处理好它们。

请看下面:

the end
各种卧室布置方案,设计师的世界