亚洲好骚综合-亚洲黄色录像-亚洲黄色网址-亚洲黄色网址大全-99久久99久久-99久久99久久精品国产

您的位置:軟件測試 > 開源軟件測試 > 開源功能測試工具 > Selenium
基于Selenium的Web自動化框架增強篇
作者:網絡轉載 發布時間:[ 2016/12/19 11:10:32 ] 推薦標簽:Selenium 功能測試

  在寫完上一篇“基于Selenium的Web自動化框架”之后一直沒有時間重新審視該框架,正好趁著給同事分享的機會,重新分析了一下框架,發現了很多不足之處,所以才有了這篇增強版。
  那么問題來了,到底在框架的哪一部分做了增強呢?這次主要從設計模式的角度來簡單介紹一下。
  首先我們來看一下之前是如何書寫頁面模式中的類的:
BasePage:
class BasePage(object):
"""description of class"""
#webdriver instance
def __init__(self, driver):
self.driver = driver
GoogleMainPage:
from BasePage import BasePage
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
class GoogleMainPage(BasePage):
"""description of class"""
searchbox = (By.ID,'lst-ib')
def inputSearchContent(self,searchContent):
searchBox = self.driver.find_element(*self.searchbox)
searchBox.send_keys(searchContent+Keys.RETURN)
  重新審視之前的實現,我們可以發現在各個子類頁面中,均需要引用相當的selenium類庫(比如webdriver),并且需要用webdriver來定位頁面元素,這會造成各個子類頁面與selenium類庫有較多的集成,并且也是書寫上的浪費。
  現在來看一下做了結構調整的部分呈現:
BasePage:
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.common.exceptions import StaleElementReferenceException
from selenium.webdriver.support import expected_conditions as EC
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
class BasePage(object):
"""description of class"""
#webdriver instance
def __init__(self, browser='chrome'):
'''
initialize selenium webdriver, use chrome as default webdriver
'''
if browser == "firefox" or browser == "ff":
driver = webdriver.Firefox()
elif browser == "chrome":
driver = webdriver.Chrome()
elif browser == "internet explorer" or browser == "ie":
driver = webdriver.Ie()
elif browser == "opera":
driver = webdriver.Opera()
elif browser == "phantomjs":
driver = webdriver.PhantomJS()
try:
self.driver = driver
except Exception:
raise NameError("Not found %s browser,You can enter 'ie', 'ff' or 'chrome'." % browser)
def findElement(self,element):
'''
Find element
element is a set with format (identifier type, value), e.g. ('id','username')
Usage:
self.findElement(element)
'''
try:
type = element[0]
value = element[1]
if type == "id" or type == "ID" or type=="Id":
elem = self.driver.find_element_by_id(value)
elif type == "name" or type == "NAME" or type=="Name":
elem = self.driver.find_element_by_name(value)
elif type == "class" or type == "CLASS" or type=="Class":
elem = self.driver.find_element_by_class_name(value)
elif type == "link_text" or type == "LINK_TEXT" or type=="Link_text":
elem = self.driver.find_element_by_link_text(value)
elif type == "xpath" or type == "XPATH" or type=="Xpath":
elem = self.driver.find_element_by_xpath(value)
elif type == "css" or type == "CSS" or type=="Css":
elem = self.driver.find_element_by_css_selector(value)
else:
raise NameError("Please correct the type in function parameter")
except Exception:
raise ValueError("No such element found"+ str(element))
return elem
def findElements(self,element):
'''
Find elements
element is a set with format (identifier type, value), e.g. ('id','username')
Usage:
self.findElements(element)
'''
try:
type = element[0]
value = element[1]
if type == "id" or type == "ID" or type=="Id":
elem = self.driver.find_elements_by_id(value)
elif type == "name" or type == "NAME" or type=="Name":
elem = self.driver.find_elements_by_name(value)
elif type == "class" or type == "CLASS" or type=="Class":
elem = self.driver.find_elements_by_class_name(value)
elif type == "link_text" or type == "LINK_TEXT" or type=="Link_text":
elem = self.driver.find_elements_by_link_text(value)
elif type == "xpath" or type == "XPATH" or type=="Xpath":
elem = self.driver.find_elements_by_xpath(value)
elif type == "css" or type == "CSS" or type=="Css":
elem = self.driver.find_elements_by_css_selector(value)
else:
raise NameError("Please correct the type in function parameter")
except Exception:
raise ValueError("No such element found"+ str(element))
return elem
def open(self,url):
'''
Open web url
Usage:
self.open(url)
'''
if url != "":
self.driver.get(url)
else:
raise ValueError("please provide a base url")
def type(self,element,text):
'''
Operation input box.
Usage:
self.type(element,text)
'''
element.send_keys(text)
def enter(self,element):
'''
Keyboard: hit return
Usage:
self.enter(element)
'''
element.send_keys(Keys.RETURN)
def click(self,element):
'''
Click page element, like button, image, link, etc.
'''
element.click()
def quit(self):
'''
Quit webdriver
'''

上一頁12下一頁
軟件測試工具 | 聯系我們 | 投訴建議 | 誠聘英才 | 申請使用列表 | 網站地圖
滬ICP備07036474 2003-2017 版權所有 上海澤眾軟件科技有限公司 Shanghai ZeZhong Software Co.,Ltd
主站蜘蛛池模板: 日本三级带日本三级带黄国产 | 首页 动漫 亚洲 欧美 日韩 | 欧美视频网站免费看 | 永久免费在线播放 | 国产精品成人久久久 | 亚洲视频aaa | 亚洲va在线va天堂va手机 | 亚洲日本va| 波多野吉衣在线多野结衣 | 羞羞视频免费网站com | 手机毛片免费看 | 99网站在线观看 | 天天射天天射天天干 | 久热爱精品视频在线观看久爱 | 国产一区二区三区在线观看精品 | 婷婷人人爽人人做人人添 | 亚洲理论a中文字幕在线 | 九九热亚洲精品综合视频 | 国产亚洲人成网站观看 | 成熟女人50岁一级毛片不卡 | 正在播放的国产a一片 | 456极品嫩模在线视频 | 久久久99精品 | 日韩欧美精品综合久久 | 国产福利在线小视频 | 伊人久久免费视频 | 97午夜理伦片在线影院 | 日b视频免费看 | 欧美专区在线播放 | 18成人免费观看网站入口 | 手机看片欧美日韩 | 午夜小视频在线观看 | 中国性xxxx | 成人短视频视频在线观看网站 | 一个人在线看的免费视频 | 国产黄大片在线观看视频 | 2017天天爽夜夜爽精品视频 | 男女视频在线观看免费高清观看 | 日韩一级精品久久久久 | 天天成人| 欧美激情在线观看一区二区三区 |