Ⅰ [Selenium自動化測試實戰] 不打開瀏覽器如何進行WEB自動化測試
在一般的使用場景下,使用selenium進行web自動化測試都需要打開一個瀏覽器的實體,測試腳本通過控制webdriver來對瀏覽器進行操作。但是在一些場景下測試工程師需要在不打開瀏覽器的情況下進行自動化測試,也就是以headless的方式運行自動化測試。
業界有一些headless的第三方庫可以使用,例如大名鼎鼎的PhantomJS。但是這些工具的安裝很復雜,同時不一定保證持續的維護。
現在全球最受歡迎的瀏覽器Chrome在Chrome 59 (Chrome 60 for Windows)版本中已經支持了headless mode,只需要配置一些簡單的參數就可以實現。
首先要確認自己機子上的Chrome版本。
require 'selenium-webdriver'
options = Selenium::WebDriver::Chrome::Options.new
options.add_argument('--headless')
options.add_argument('--disable-gpu')
options.add_argument('--remote-debugging-port=9222')
driver = Selenium::WebDriver.for :chrome, options: options
driver.get "https://www.jd.com"
driver.save_screenshot("#{File.dirname(__FILE__)}/#{Time.now.strftime("%F")}")
通過在Selenium::WebDriver::Chrome::Options類的對象中添加argumentoptions.add_argument('--headless'),可以讓我們在Chrome在headless模式下運行。
而第二個argument的作用是針對現有bug的work around。第三個argument的作用則是允許我們可以在另外一個瀏覽器中debug。
為了觀測運行的情況,我保存了一個屏幕截圖。
相比於之前的headless web自動化方案,Chrome的優勢在於設置的方便,甚至可以和當前的框架無縫切換,同時Chrome作為最為主流的瀏覽器,你也不用擔心持續維護的問題。
Ⅱ 零基礎學Web前端的學習路線總結
今天小編要跟大家分享的文章是關於零基礎學Web前端的學習路線總結,准備學習web前端知識的小夥伴們來和小編一起看一看吧,希望本篇文章能夠對大家有所幫助。
第一個階段:
1、HTML+CSS:HTML進階、CSS進階慶慎猜、div+css布局、HTML+css整站開發。
2、JavaScript基礎:Js基礎教程、js內置對象常用方法、常見DOM操作、ECMAscript、DOM、BOM、定時器和焦點圖。
3、JS基本特效:常見特效、例如:tab、導航、整頁滾動、輪播圖、JS製作幻燈片、彈出層、手風琴菜單、瀑布流布局、滾動事件、滾差視圖。
4、JS高級特徵:正則表達式、排序演算法、遞歸演算法、閉包、函數節流、作用域鏈、基於距離運動框架、面向對象基礎。
5、JQuery:懸著器、DOM操作、特效和動畫、方法鏈、拖拽、變形、JQueryUI組件基本使用。
第二個階段:
1、HTML5:HTML5新語義標簽、HTML5表單、音頻和視頻、離線和本地存儲、SVG、WebSocket、Canvas。
2、CSS3:CSS3新選擇器、偽元素、臉色表示法、邊框、陰影、background系列屬性改變、Transition、動畫、景深和深透、3D效果製作、Velocity.js框架、元素進場、出場策略、炫酷CSS3網頁製作。
3、Bootstrap:響應式概念、媒體查詢、響應式網站製作、刪格系統、刪格系統原理、Bootstrap常用模板、LESS和SASS。
4、移動Web開發:跨終端WEB和主流設備簡介、視口、流式布局、彈性盒子、rem、移動終端JavaScript事件、手機中常見JS效果製作、Zepto.js、手機聚劃算頁面、手機滾屏。
第三個階段:
1、WEB伺服器基礎:伺服器基礎知識、Apache伺服器和其他WEB伺服器介紹、Apache伺服器搭建、HTTP介紹。
2、PHP基礎:PHP基礎語法、使用PHP處理簡單的GET或者POST請求。
3、AJAX:Ajax簡介和非同步的概念、Ajax框架的封裝、XMLHttpRequest對象詳細介紹方法、兼容性處理方法、Ajax框架的封裝、Ajax中緩存問題、XML介紹和使用。JSON和JSON解析、數據綁定和模板技術、JSONP、跨域技術、圖片預讀取和lazy-load技術、JQuery框架中的AjaxAPI、使用Ajax實現爆布流案例額。
第四個階段:
面向對象:從內存角度到理解JS面向對象、基本類型、復雜類型、原型鏈、ES6中的面向對象、屬性讀寫許可權、設置器、訪問器。
第五個階段:
1、框架封裝基礎:事件流、冒泡、捕獲、事件對象、事件框架、選擇框架。
2、框架封裝中級:運動原理、單物體運動框架、多物體運動框架、運動框譽型架面向對象封裝。
3、框架封裝高級和補充:JQuery框架雛形、可擴展性、模塊化、封裝屬於傳智自己的框架。
第六個階段:
1、Web開發工作流:GIT/SVN、Yeoman腳手架、NPM/Bower依賴管理工具、Grunt/Gulp/Webpack。孝乎
2、MVC/MVVM/MVW框架Angular.js、Backbone.js、Knockout/Ember。
3、常用庫:React.js、Vue.js、Zepto.js。
第七個階段:
Node.js全棧開發
以上就是小編今天為大家分享的關於零基礎學Web前端的學習路線總結的文章,希望本篇文章能夠對正在學web前端知識的新手有所幫助,想要了解更多web前端知識記得關注北大青鳥web培訓官網,最後祝願小夥伴們學習成功,成為一名優秀的web前端工程師。
文章來源:原創前端資源庫前端資源庫
Ⅲ web自動化測試之web自動化中操作要點
1、切換iframe:
driver.switch_to.frame(' xxx')
2、瀏覽器向右移動頁面(瀏覽器中執行JavaScript代碼)
driver.execute_script('window.scrollBy(200,0)') # window.scrollBy(x,y)
3、driver.implicitly_wait()和time.sleep()的區別
driver.implicitly_wait(10) #設置尋找元素最大等待時間;
implicitly_wait(5)屬於隱式等待,5秒鍾內只要找到了元素就開始執行,5秒鍾後未找到,就超時;
time.sleep(5)表示必須等待5秒定位。
4、切換到新的目標窗口
#切換webdriver到新的目標窗口
for handle in driver.window_handles:
driver.switch_to.window(handle)
#判斷是否進行了目標窗口
title=driver.title
if 'xxxxx' in title:
break
5、當頁面廣告遮擋了元素,可將頁面廣告元素刪除
element=driver.find_element_by_css_selector('#meiqia-container iframe[name=chat]') driver.execute_script('$(arguments[0]).remove()',element) #將element傳給了arguments[0] time.sleep(2)
6、切換瀏覽器標簽頁
使用switch_to_window(window),搭配句柄window_handles、current_window_handle使用。
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www..com")
driver.implicitly_wait(10)
driver.find_element_by_id("kw").send_keys("python")
driver.find_element_by_id("su").click()
driver.find_element_by_xpath("//*[@id='2']/h3/a").click()
#獲取當前窗口所有句柄
all_windows = driver.window_handles
#獲取當前標簽頁窗口句柄
current_window = driver.current_window_handle
#切換標簽頁窗口
for window in all_windows:
if window !=current_window:
print("切換前的窗口名稱是:",driver.title)
driver.switch_to_window(window)
time.sleep(2)
print("切換後的窗口名稱是:",driver.title)
break
7、切換iframe頁面
使用switch_to_frame()、switch_to_default_content(),一般成套使用更好,以防止未切回導致定位失敗。
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("https://ke.qq.com/")
driver.implicitly_wait(10)
#點擊登錄
driver.find_element_by_class_name("btn-default").click()
time.sleep(0.5)
driver.find_element_by_xpath("//*[@class='js-btns-enter btns-enter btns-enter-qq']").click() time.sleep(2)
#點擊賬號密碼登錄
#這里直接定位會失敗,需要切換到登錄彈窗頁面後再進行定位,習慣使用的是2種切換方式
#1.iframe有唯一名稱
driver.switch_to_frame("login_frame_qq")
driver.find_element_by_id("switcher_plogin").click()
driver.find_element_by_id("u").send_keys("123456789")
#回切到主頁面
driver.switch_to_default_content()
time.sleep(2)
#2.iframe無名字,使用下標進行切換,且下標從0開始
#在頁面中查到到當前需要定位的iframe在第3個,所以下標是2
#再次切換到彈窗頁面 driver.switch_to_frame(2)
driver.find_element_by_id("p").send_keys("123456789")
driver.find_element_by_id("login_button").click()
driver.switch_to_default_content()
time.sleep(5)
driver.quit()
8、處理彈窗
使用switch_to_alert()中的accept()、dismiss()、send_keys、text進行操作,彈窗一般有三種類型,①.只有確認按鈕的;②.有確認/取消按鈕的;③.需要輸入文字的。
import time
from selenium import webdriver
driver = webdriver.Chrome()
driver.get("http://www..com")
driver.implicitly_wait(10)
#創建一個測試彈窗
driver.execute_script("window.alert('這是一個測試彈窗')")
time.sleep(2)
#1.彈窗中只有確認按鈕的
driver.switch_to_alert().accept()
time.sleep(1)
#2.彈窗中有確認/取消按鈕的
driver.execute_script("window.alert('這是一個測試彈窗')")
time.sleep(3)
#點擊取消
driver.switch_to_alert().dismiss()
time.sleep(1)
#彈窗中需要輸入文字的
# driver.switch_to_alert().send_keys("測試測試測試")
#獲取彈窗中的內容
driver.execute_script("window.alert('這是一個測試彈窗')")
res = driver.switch_to_alert().text
print(res)