1. Web UI自動化測試之Selenium3
一、WebDriver(import org.openqa.selenium.WebDriver)操作瀏覽器
selenium通過WebDriver對象來定位頁面元素
1、打開瀏覽器
打開火狐瀏覽器:
WebDriver driver = new FireFoxDriver();
打開IE瀏覽器:
WebDriver driver = new InternetExplorerDriver();
打開chrome瀏覽器
WebDriver driver = new ChromeDriver();
2、最大化瀏覽器
driver.manage().window().maximize();
3、關閉瀏覽器
driver.close();
driver.quit();
4、打開測試頁面
driver.get("http:www..com");
二、By(org.openqa.selenium.By) 定位頁面元素
selenium通過By對象來定位頁面元素
1、By.id 通過ID定位頁面元素
By.id("UserCode")
2、By.name 通過name定位頁面元素
By.id("UserCode")
3、By.className 通過className定位頁面元素
By.className("input_class")
4、By.linkText 精確查找
drive.get("http://www..com");
By.linkText("網路");
5、By.partialLinkText 模糊查找
driver.get("http://www..com");
By.partialLinkText("網路");
6、By.tagName
dirver.get("http://www..com");
By.tagName("input");
三、WebElement(org.openqa.selenium.WebElement)操作頁面元素
selenium通過WebElement對象來操作頁面元素
1、操作輸入框
WebElement inputElement = driver.findElement(By.id("UserCode"));//查找登錄頁面錄入用戶名元素
inputElement.setKeys("wyl");//輸入框錄入用戶名wyl
inputElement.clear();//清空輸入框
inputElement.getText();//獲得輸入框中的內容
2、操作單選框
WebElement radioElement = driver.findElement(By.id("Orders"));
radioElement.click();// 選擇某個單選項
radioElement.clear();// 清空某個單選項
radioElement.isSelected();// 判斷某個單選項是否已被選擇
3、操作多選框
WebElement checkboxElement = driver.findElement(By.id("Orders"));
checkboxElement.click();// 選擇某個多選項
checkboxElement.clear();// 清空某個多選項
checkboxElement.isSelected();//判斷某個多選項是否已被選擇
4、操作下拉框
Select select = new Select(per.findElement(By.id("region")));
select.selectByVisibleText("北京市");
select.selectByText("10010");
select.deselectAll();
select.deselectByVisibleText("北京市");
select.deselectByText("10010");
select.getAllSelectedOptions();
select.getFirstSelectedOption();
5、操作上傳文件
WebElement uploadElement = driver.findElement(By.id("file"));
String uploadFile = "D:1AgentCode.txt";
uploadElement.setKeys(uploadFile);
6、操作按鈕
WebElement btnElement = driver.findElement(By.id("add"));
btnElement.click();
btnElement.isEnabled();
7、表單提交
WebElement formElement = driver.findElement(By.id("fm"));
fromElement.submit();
8、操作彈出對話框
Alert alert = driver.swichTo().alert();
alert.getText();//獲得彈出框內容
alert.accept();//點擊彈出框確認按鈕
alert.dismiss();//點擊彈出框取消按鈕
9、Windows和Frames之間的切換
driver.switchTo().defaultContent();//返回到最頂層的frame
driver.switchTo().frame("leftMenuFrame");//切換到左側菜單frame
driver.switchTo().window("windowName");//切換到某個windows
10、超時設置
driver.manage().timeouts().implicitly(10,timeUnit.Seconds);//識別元素時的超時時間
driver.manage().timeouts().pageLoadTimeout(10,timeUnit.Seconds);//頁面載入時的超時時間
driver.manage().timeouts().setScriptTimeout(10,timeUnit.Seconds);//非同步腳本的超時時間
四、調用js
JavascriptExecutor js = (JavascriptExecutor)driver;
js.executeScript("JS腳本");
五、Selenium官方
1、官方download包下載地址
http://code.google.com/p/selenium/downloads/list
2、官方User Guide
http://seleniumhq.org/docs/
3、API
http://selenium.googlecode.com/git/docs/api/java/index.html
2. 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)
3. web自動化測試計劃和步驟
測試用例:前置、步驟、斷言
項目周期長:功能會越來越復雜
歷史功能:比較穩定
回歸,歷史功能
開發-介面自動化同步
項目-8大模塊-2000左右用例數
1、熟悉業務
需求文檔/手動測試/產品聊,了解模塊之間的關系/測試人員
項目目前在測試的階段,棘手的問題
2、分析
系統當中哪些模塊適合自動化、哪些模塊不適合
歷史功能穩定性、功能復雜性
核心模塊
使用頻率模塊,哪一個模塊bug率目前偏高
測試團隊、產品 開會討論
篩選2個模塊 400個功能測試用例
如果是介面 ---介面有多少個,每個介面有多少個用例
3、功能測試 ---篩選自動化測試用例----核心功能、主流程、主功能點---140
用例評審===
4、自動化計劃
自動化類型:web/介面
框架選型:
團隊人員:
搭框架、定規范
時間規劃:用例編寫時間2個半月
效果:覆蓋率是多少---用例通過率---跟項目測試進度結合
4. Web端自動化測試失敗的原因
最初的測試自動化失敗是從不切實際的期望中獲得的。在我的職業生涯中,我已經多次觀察到它,一旦您獲得了自動化的質量保證或工作人員,管理層就期望他們對所有內容進行自動化測試。盡管聽起來很令人愉悅,但這是不可能的。您不能進行100%的自動化測試,因為在少數幾個領域必須進行人工檢查。這些領域之一可能與您的Web應用程序的可訪問性有關。
例如,如果您正在執行自動跨瀏覽器測試,則用於Selenium測試的自動化腳本將在不同的瀏覽器或操作系統上呈現網頁的顯示。但是,要確定網站是否按照設計進行渲染,版式是否合適,文字是否合適,最好手動評估
許多組織確實意識到期望進行100%自動化測試的問題陳述,但通常會遇到以下問題。我們可以實現什麼自動化,如果不是100%,那麼我們可以為Web產品實際實現多少自動化?
沒有適用於每個企業的自動化測試覆蓋率的完美百分比或近似值。這完全取決於您所提供的Web應用程序,並且由於不同的企業正在滿足不同的需求。自然而然地,人們會對圍繞自動化測試實際能實現的自動化測試百分比抱有獨特的期望?自動化測試的范圍將從電子商務Web應用程序到靜態,動態或動畫Web應用程序有所不同。因此,如果您想知道為什麼自動化測試對您的組織失敗?然後,我建議您根據所提供的Web應用程序的類型來評估所需的自動化測試量。
在我作為自動化測試員開始IT生涯時,我就一直是管理不當的受害者。我當時在一家基於Service的公司工作,他們為我分配了我的第一個項目。這個項目已經運行了兩年,當我加入後,我被交給了一系列測試自動化腳本。項目的高層將要離開組織,管理層對即將到來的沖刺太忙了,無法考慮將要離開的高級自動化測試人員進行的全面知識轉移課程。他們離開後發生的景象不佳?我的經理在聽證會的結尾說,我們因停電而大吃一驚,而我剛起步,對各種出站和入站流程如何受到眾多自動化腳本的影響的了解最少。然而, 我見過一些由少數成員負責實現自動化的團隊,而其他成員則對正在發生的事情一無所知。
您是否認為當一半的團隊缺乏可見性時,從自動化測試中獲得魔術效果是不現實的嗎?由於自動化必須是一個協作的工作,因此對每個團隊成員進行相關工具和流程的教育非常重要,尤其是對新手而言。您可以通過舉行團隊會議和會議來討論與自動化有關的工具,趨勢和實踐,從而實現這一目標。
這可能會讓您有些驚訝,測試自動化失敗的另一個原因可能是缺少手動測試技能或 探索 性測試技能。自動化測試腳本並不意味著團隊成員可以減少一些懈怠。到目前為止,我們已經知道,自動化方法不能涵蓋所有內容,而這正是挑戰所在。因為現在您必須更深入地研究Web應用程序,並找到隊友尚未發現的關鍵測試方案。
自動化是節省測試工作的一種方式。軟體公司應該使用它來最大程度地減少重復,並盡量使那些不易更改的元素自動化。一旦完成,公司應該分配他們的資源來執行廣泛的手動測試或 探索 性測試,以找到獨特的測試用例。
自動化似乎是減少工作量的一個目標。但是在開發測試自動化腳本之前,必須考慮周全。此外,這可能會花費大量的自動化測試執行時間。框架和測試自動化工具的靈活性在開發腳本場景所需的時間中起著至關重要的作用。
由於每種情況都不同,因此必須編寫腳本。即使您仔細考慮,如果不編寫腳本腳本,這都是浪費。確保測試工程師的編碼技能與測試的復雜性保持一致。復雜的測試需要大量時間才能實現自動化。因此,隨著全新功能的發展,他們通常沒有機會發現回歸的錯誤。在寫下測試方案之前,請確保牢記這些注意事項。
「 為什麼測試自動化對您的公司失敗?」背後的最常見的原因?」是人們不知道什麼時候應該自動化,什麼時候不知道。例如,可以自動化不同的網頁功能。但是通過測試自動化評估填充,圖像等渲染問題不是一個好主意。如果使用坐標來確定元素位置,則在以不同的屏幕解析度和大小運行時,可能會導致差異。
在測試易於進行大量更改的項目時,使用自動化是不可行的。如果您要測試穩定的實體,那麼自動化是必經之路。基本上,需要重復執行某些操作的普通任務最適合自動化測試。因此,測試自動化可以簡化您的回歸測試過程。
我看到IT行業普遍存在錯誤觀念。人們認為任何開發人員或測試人員都可以執行測試自動化。測試自動化的設計,配置和實施需要特定的技能。執行自動化的測試人員應該知道如何在經理,開發人員和客戶之間闡明想法。他/她還應該對開發趨勢有清晰的了解,並且應該知道開發團隊要去的方向。
自動化測試工程師是最困難但最重要的一些人。為了啟動各種自動化項目,聘請具有廣泛技術知識的測試人員至關重要。整個團隊應該知道發生了什麼,而不是由一個或幾個人進行自動化測試。即使在僱用技術精湛的員工方面投入很高,但回報還是值得的。
由於自動化測試是一個相對較新的現象,因此失敗的可能性很高。測試團隊進行的新實驗太多,因此准確分析結果變得很重要。進行測試後,測試人員必須做出詳盡的測試報告。但是,這就是測試自動化對您而言失敗的原因!您的團隊沒有對測試報告的分析給予足夠的重視。如果執行不當,分析可能會導致無人看管的故障,並浪費時間,資源和精力。
在自動測試中,有些測試成功,有些失敗。因此,必須檢查測試報告是否有故障並分析某些測試失敗的原因。最好手動進行分析,以發現真正的故障。揭露隱藏的問題並確保它們不會被其他問題掩蓋而被忽略是至關重要的。
設置太高而不能成為自動化的真正目標,在紙面上似乎很完美。但是,在執行步驟時,團隊成員之間嚴重缺乏清晰度。最大的問題是目標不明確。他們缺乏從自動化中獲得真正價值的准確性和准確性。大多數公司所做的是,他們開始將非常復雜的事情自動化,並最終重構整個框架。結果,團隊最終會浪費大量時間,金錢和精力。
您可以通過從小處著手並逐步提高復雜性來消除不確定性。選擇穩定的功能,並從其自動化開始。之後,收集反饋以確定出了什麼問題。一旦您的測試達到一致性,就可以繼續使用其他功能。對於不同的項目環境,需求可能會有所不同,因此請使用自定義方法進行測試自動化。
在擁有大量自動化工具的情況下,有時候選擇最佳工具變得充滿挑戰。最終目標是改善整體測試程序並滿足實際要求。但是大多數團隊都無法從頭再來,也沒有挑選出最適合其測試需求的工具。毫無疑問,自動化測試是高度依賴於您決定繼續使用的工具。每個工具都有特定的功能。但是,團隊缺乏充分利用這些功能所需的專業知識水平。
此外,公司陷入了對特定工具的炒作。但是在選擇它之後,他們意識到它並沒有提供他們希望獲得的一切。另外,每個團隊都有預算,有時該工具的成本超出了預算。在繼續選擇操作工具之前,請仔細列出要求。之後,確定您對該工具的期望值。在設定目標時要非常具體,並檢查與產品用戶接受標準的對應關系。您也可以咨詢有使用這些工具經驗的專家。
幾乎每個組織都經常觀察到這一點。一旦自動化測試套件准備就緒並且工作正常,管理就開始放鬆。他們開始放寬對測試執行的深入分析,因為他們認為只有通過/失敗檢查才足夠。但是,這就是測試自動化導致他們失敗的原因!
有時,系統從根本上可以正常運行。但是,自動化腳本不能反映出相同的情況。他們以其他方式陳述並導致假陽性方案。因此,這造成了混亂的局面,浪費了時間,精力和資源。我已經看到測試團隊試圖找到不存在的東西是多麼令人沮喪!
每個Web元素都必須有一個ID才能執行有效的測試。但是有時,開發人員無法將ID分配給所有Web元素,這就是測試自動化失敗的原因。在這種情況下,自動腳本必須查找這些Web元素,這會花費大量時間。此外,如果腳本無法在規定的時間內找到這些元素,則測試將失敗。因此,為了確保腳本的正確同步,團隊必須為所有Web元素分配唯一的ID。
因此,最終使所有想要自動化的東西都自動化了。您最終獲得了龐大的測試套件,直到現在,您才開始碰壁。這些復雜的測試套件執行時間比您預期的要長。這開始與您各自的IDE測試自動化框架中的測試隊列質量相抵觸。結果,由於隊列超時問題,測試用例突然停止,這都是因為您要按順序執行它們。測試用例的順序執行是Web應用程序測試自動化失敗的另一個原因。
與順序運行測試不同,並行執行使您可以在不同的環境中同時執行多個測試。但是自動化測試可能會導致意外的代碼交互。調試失敗的原因非常困難,因此您需要透徹的報告機制,提供有關測試執行的詳細見解。
無論您在線經營什麼業務,ROI都將成為每次董事會會議的議程。股東要求更高的回報。而且,無論您准備測試自動化套件花費了多少時間和精力,如果它們產生的ROI均達不到預期,那麼它們的重要性將比您預期的要輕得多。
在計算測試自動化的投資回報率時,可能需要考慮許多指標,例如測試維護,購買必要的測試自動化工具所涉及的成本,板載資源等等。計劃不切實際的ROI對於許多組織而言可能是成問題的,並且可能是測試自動化失敗的原因。
許多組織給人以自動化測試容易的印象。您所需要做的只是編寫幾行代碼以自動化您的Web應用程序的測試工作流程。就是這樣!您完全不必擔心測試自動化腳本的計劃和輸入。但這不是!
您需要評估波紋效應。您的Web應用程序將包含許多旨在測試不同模塊和流程的測試自動化腳本。如果一個測試腳本無法正確執行,則其他腳本也可能觸發測試自動化失敗。不僅如此,在計劃資源時還應該計算出連鎖反應。
假設您有一個高級資源,他曾經寫過腳本,現在已經離開了公司。您可能沒有想到辭職可能會在自動化項目的未來時間表中產生連鎖反應。這就是為什麼需要記錄有關系統中每個自動化測試腳本的每個細節的原因。該文檔應作為萌芽的自動化測試人員以及經驗豐富的自動化測試人員的標准。
測試自動化對您的組織失敗的另一個原因可能是不合適的測試套件。許多自動化測試人員會創建靜態測試套件,這些套件在您擴展業務時並不那麼靈活。每當平台發展時,它們最終都會重新編寫整個自動化測試腳本。這是一個壞習慣,因為您在浪費時間,資源和金錢。另外,這也是一個錯誤的過程。確保您編寫隨平台擴展而發展和適應的測試套件。
避免測試自動化失敗的另一種方法是即興測試套件。現在,這聽起來似乎很明顯,但是在許多組織中卻沒有實踐。原因是,一旦他們設計了測試套件,並發現它可以正常工作,便開始著手自動化新領域。我沒有批評沉迷或 探索 新領域以實現自動化的努力。但是,管理一個時間窗口並讓您和您的團隊回顧現有的代碼段,以找出進一步優化它的方法並沒有什麼壞處。始終嘗試使用您的測試套件,以使事情變得更好。
隨著敏捷軟體,看板軟體等現代SDLC(軟體開發生命周期)方法在全球范圍內的採用,協作已成為將Web應用程序更快部署到市場中的關鍵組成部分。
這是一個多維軟體開發過程,所有團隊都在同時開發Web應用程序。您有一組開發人員設計前端,另一個負責後端,還有一個負責中間件活動的團隊。作為測試人員,您需要了解哪個團隊負責哪個模塊。您必須及時了解不同團隊所做的產品增強功能,並對自動化腳本進行相關更改,以確保測試自動化不會失敗。
自動化測試的主要目的是最大程度地減少重復手動測試所涉及的壓力,以節省時間。從抽象的角度看,這聽起來不錯,但對於那些執行測試自動化的人來說,要意識到為執行內部測試自動化而配置正確的基礎結構的艱辛。我經常觀察到測試人員在執行新腳本之前會刷新整個測試自動化套件,以避免與腳本產生任何歧義。但這不能使自動化測試的整個過程都失敗,不是嗎?
例如,如果您正在使用內部Selenium Grid執行自動跨瀏覽器測試,以測試適用於Google Chrome和Safari瀏覽器的macOS和Windows操作系統的網站。現在,您可能每次都要運行Selenium腳本之前就不得不面對設置新操作系統的麻煩。
這是組織自動化測試失敗得非常普遍的原因。特別是在臨近最後期限時。您的測試部門將繼續在同一測試環境上運行大量測試套件,而不會清除先前執行的測試自動化腳本的緩存。這可能會導致錯誤的測試評估,當您遇到更多的假陰性和假陽性時,您的測試報告可能會受到影響。
例如,假設您需要針對不同的地理位置測試您的Web應用程序。在靜態測試環境中執行地理位置定位時。您的腳本可能會遭到Google的測試,要求您證明自己不是機器人。這將導致測試自動化腳本失敗。
這就是需要使用清除的緩存的新虛擬機的原因,因此您可以獲得自動化跨瀏覽器測試腳本的准確結果。
為了使自動化能夠在不同的測試環境中工作,需要進行大量的計劃。您需要在暫存環境上進行測試,以確保將代碼移入生產管道時,它們可以完美地工作。但是,經常會發生這樣的情況:在舞台環境中進行測試時,用於代碼更改的測試自動化腳本可以無縫運行,但是當移至生產環境時,它就會崩潰。此類問題背後可能有許多原因,例如缺乏持續的監控,登台環境無法使生產環境成對增長,缺少實時流量等等。
但並非最不重要的。如果到目前為止我們已經講完所有要點,並且您的測試自動化仍然失敗,那麼您唯一需要反思的地方就是您自己的測試自動化腳本。確保您沒有為整個項目中涉及的任何測試腳本提交任何編譯時以及運行時錯誤。
如果您的組織需要提高生產力,那麼自動化測試就是必經之路。這是提高產品質量所需的最有效的過程之一。測試自動化還提高了軟體的健壯性。但是要謹慎執行和拖延。您不能在沒有障礙的情況下匆匆忙忙,因為沒有一家公司可以承受損失巨額資金的麻煩。另一方面,過多的恐懼會阻止您獲得自動化測試所提供的顯著優勢。
感謝每一個認真閱讀我文章的人!!!
如果下面這些資料用得到的話可以直接拿走:
1、自學開發或者測試必備的完整項目源碼與環境
2、測試工作中所有模板(測試計劃、測試用例、測試報告等)
3、軟體測試經典面試題
4、Python/Java自動化測試實戰.pdf
5、Jmeter/postman介面測試全套視頻獲取
我個人整理了我這幾年軟體測試生涯整理的一些技術資料,包含:電子書,簡歷模塊,各種工作模板,面試寶典,自學項目等。需要的可以私我謝謝
5. [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作為最為主流的瀏覽器,你也不用擔心持續維護的問題。
6. 什麼是web自動化測試
web自動化測試,就是網頁自動化測試。通過軟體對web對象進行輸入數據,單擊等操作,比較預結果和實際結果,包括測試報告。
7. WebUI 自動化測試的經典設計模式:PO
先來看下未使用 PO(PageObject) 設計模式下的代碼,以網頁版網路登錄為例來說明。
非 PO(PageObject) 模式下的代碼如下,所有內容全部寫在一個方法里。
存在的問題:
PO(PageObject) 模式優化後的代碼
1、WebUI 自動化需要的 driver 基礎操作
2、登錄頁面元素獲取
3、登錄邏輯業務的封裝
4、登錄測試用例將使用以上3個頁面對象
可以發現,使用 PO(PageObject) 模式優化後的代碼,有以下明顯優勢:
1)、將以下3個模塊進行了單獨封裝 【降低了模塊之間的耦合度,使層次更加清晰合理,便於後期維護與復用】:
2)、如果前端頁面有 定位元素的 type 或 value 發生變化時,只需要修改 elements.py 文件中元素信息即可 ,不需要在測試業務模塊中進行修改。
8. web自動化測試是什麼意思
web自動化測試,就是網頁自動化測試。通過軟體對web對象進行輸入數據,單擊等操作,比較預結果和實際結果,包括測試報告。
9. web端自動化基礎篇
一、自動化測試的好處
1、 縮短測試周期:計算機行業更新迭代快速,大量頻繁的回歸測試消耗時間,自動化測試能夠將重復的實行交給計算機去做,加快測試速度。
2、避免人為出錯:測試人員不可能持續高度集中,並且人類易受外界影響(頭疼腦熱,精神不振),可能會造成人為錯誤
3、測試信息存儲:自動化測試將測試信息和數據儲存在文件中,思路清晰明確,交接方便
4、輕易獲取覆蓋率:自動化測試能夠解放測試人員,使測試人員能夠有更多的精力做那些非重復性的工作。
5、其他:自動化測試可以是實現自動或者定時執行
注意: 自動化測試的方向是對的,而且趨勢也是如此,但是有些自動化實現不了的還是會手動測試的。
二、自動化分類
1、 整體分類
(1)自動化功能測試
(2)自動化性能測試
2、自動化功能測試的分類:
(1)單元測試:程序員搞定
(2)功能測試
(3)介面測試:大中型項目或長期項目可以採用自動化測試
3、性能測試主要是使用測試工具
(1)Loadrunner、Jmeter等,對軟體進行壓力測試、負載測試等等,因為這些無法用手工進行代替,所以必須自動化。
三、web自動化條件的使用和范圍
1、前提條件
(1)手動測試已經完成,後期再不影響進度的前提下逐漸實現自動化
( 2)項目周期長,重復性的工作都交給機器去實現
( 3)需求穩定,項目變動不大
(4)自動化測試腳本復雜度比較低
( 5)可重復利用
2、使用自動化測試的場景
(1)頻繁的回歸測試
(2)冒煙測試
(3)傳統行業需求變化不大,應用頻繁
(4)性能測試
四、web自動化常用的工具
1、QTP(收費)
2、Selenium(開源)
3、RFT(收費)
4、(1)元素定位工具:css選擇器、xpath
(2)環境工具:(1)firefox35
(2)firebug插件
(3)firepath插件
5、什麼是xpath:XPath即為XML路徑語言,它是一種用來(標准通用標記語言的子集)在 HTML\XML 文檔中查找信息的語言。
6、什麼是xml:XML 指可擴展標記語言(EXtensible Markup Language)XML 是一種標記語言,很類似 HTMLXML 的設計宗旨是傳輸數據,而非顯示數據
7、(1)xml是設計為傳輸和存儲數據的。
(2)html是顯示數據以及更好的顯示數據
8、獲取元素
(1)nodename:選取此節點的所有子節點
(2)/從根節點選取
(3)//從匹配選擇當前節點選擇文檔的節點,不考慮位置
(4)「.」選取當前節點
(5)「..」選取當前節點的父節點
(6)@選取屬性
10. web自動化測試的流程
自動化測試流程
(1)需求分析(2)挑選適合做自動化測試的功能(3)設計測試用例(4)搭建自動化則試環境[可選](5)設計自動化測試項目的架構[可選](6)編寫代碼(7)執行測試用例(8)生成測試報告並分析結果
自動化項目框架自動化框架
①順序:先編寫工具類--> (父類) -P代碼(對象庫存-操作層->業務層) ->unittest框架編寫腳本(數據驅動JISON讀取) ->測試報告->日誌
②用了selenium和uittest框架 使用po三層分層模式進行框架設計
③然後編寫測試腳本調用 用unittest框架編寫數據驅動存放測試數據
④執行完成了之後通過第三方模塊生成測試報告
⑤日誌
我也就能幫你到這里了,希望對你有所幫助。