Ⅰ 用webdriver進行自動化,用js修改隱藏控制項的值之後,頁面上的值並沒有顯示出來,請問具體要怎麼做
當你修改那個隱藏欄位的值時(你肯定是用JS改的鏈做唯吧?),同時修改那個 i 標記的text不就行了?用jQ寫的話:
var val = 1988;
$('input[name="棚培dateForm.year"]').val(val); // 這段代碼你應該已經寫了
$('.sVal').text(val); // 再加上這段,但請注意class為sVal的標記應該只有這一個胡帶,否則……
如果你不想用jQ,當然也沒問題,但需要稍微多寫點兼容代碼(該死的IE8!),如果需要請追問。
Ⅱ [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自動化測試,使用node.js 與python哪個語言更合適
Node.js是現在WEBAPP快速開發的標配。python的WEB框架還有模板很多。這個取決於你習慣什麼方式開發。
如果熟悉 python使用node.js沒有壓力,可以完美融合。 如果對python不熟悉,node.js可以給你驚喜。
不過就我個人而言python很熟練,python給我的自由度與支撐力度遠遠大於node.js。 node.js是一些喜歡javascript的極客做的js的後台執行程序。 支持力度顯然遠遠比不上有10幾年WEB開發歷史的python。
node.js有一個最大的好處是前端與後端的融合比較好。都是JS開發的。有利於前端人員快速開發後台伺服器。
再加上node.js大量爆發的各種工具。所以node.js很有前途。 相對python的架構不溫不火。
從開發速度來看。兩者差不多。從系統維護性上。 python要好很多。
從最高性能上看,python也要好很多。 著名的某團隊聊天軟體就是node.js架構。
但是限於javascript語言本身的性能以及執行方式,支持力度。 後台開發還是不建議用node.js,除非你有足夠的理由 。比如快速開發,比如缺少足夠 的後台開發人員,或者是團隊成員整體偏前端等。
node.js真的很適合初學者。 特別是正在學習javascript人。 不過node.js想做好就不容易,特別是團隊規模超過10個人時,代碼很難維護。
v8引擎很強大,大多數測試結果顯示node.js比python性能高。這個感覺挺無語。 js在v8上的優化效果的的確確比python解釋器要強。這是事實。 不過python如果你用得很熟練的情況下,有很多技巧可以將這些差距縮小,以至於超過,完全沒有壓力。
比如我這邊做一個伺服器,通常性能要求很高的情況下,不會使用python做前端,而是使用java+cache做後台伺服器前端。 這樣性能就遠遠超過其它的WEB後端伺服器了。
python在後處理,批處理,數據處理,快速開發很強大。 WEB方面就當是玩具吧。 算是一種快速 開發的補償。 做做膠水,連接不同系統的介面還是可以的。
Ⅳ web自動化中頁面多個滾動條時的拖動操作
當頁面中有多個滾動條控制顯示範圍時,拖動指定的滾動條,可以通過JS語句來實現document.querySelector('.summary').scrollTop=200;解釋: 1.通過在頁面中通過選擇器進行元素定位 2.將定位到的指定元素scrollTop屬性設置為200然後通過driver.execute_script()方法執行js語句即可,需要的小夥伴可以到傳智播客的社區看到相關操作的全部解答。傳智播客的官網也可以領取到相關的免費的公開課。
Ⅳ 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)
Ⅵ 用釘釘掃碼登錄的web程序怎麼實現自動化測試
1.建立伺服器
我們可以在資料庫中建一個qrlogin的表來保存key,比如我們建這樣的一個表
其中qrl_guid就是登錄的key,登錄後的標識flag就是qrl_dingDingUserId(釘釘用戶的ID)。
2.生成二維碼
二維碼的生成可以使用相關的庫,比如.net的可以用thoughtworks.qrcode.dll,生成的字元串是htttp://www.xxx.com/qrlogin.html?key=生成的GUID,代碼如下
[csharp] view plain
string enCodeString = "http://www.xxx.com/qrlogin.html?key=" + key;
QRCodeEncoder qrCodeEncoder = new QRCodeEncoder();
Bitmap qrBmp = qrCodeEncoder.Encode(enCodeString, Encoding.UTF8);
其中key需要先將其插入到資料庫表TQRLogin中。
3.qrlogin.html頁面
在使用釘釘掃一掃進入到qrlogin.html頁面後,我們不只需要得到url中的key,還需要得到該用戶的信息,為此需要jsapi的票據,然後配置要調用的jsapi,比如dd.runtime.permission.requestAuthCode,再通過該函數得到用戶的信息,示例代碼如下
[javascript] view plain
Ⅶ web自動化測試需要學習哪些技術
需要學習html,JS前端技術,了解web元素。
一個腳本語言或編程語言,以做自動化腳本開發調試。
一個自動化工具,如qtp或selenium,從工具入手開始做web自動化。
Ⅷ 如何搭建webdriver+selenium+nodejs自動化測試框架
1
安裝nodejs程序包
2
打開nodejs
從開始程序中選擇Node.js--->Node.js command prompt
3
在命令窗口輸入以下命令
一、npm install webdreverio -g
二、npm install selenium-standalone@latest -g
4
安裝selenium服務,在命令窗口輸入以及下命令
selenium-standalone install
此時會報錯,告訴你IE和谷歌驅動安排不成功
解決方法:新此目錄下的C:\Users\saber\AppData\Roaming\npm\node_moles\selenium-standalone\.selenium的chromedriver和iedriver文件夾替換掉
5
配置環境變數
編輯用戶變數:
變數名:PATH
變數值:C:\Users\saber\AppData\Roaming\npm
新建系統變數:
變數名:node_path
變數值:C:\Users\saber\AppData\Roaming\npm\node_moles
6
開啟selenium服務,在命令窗口輸入以下命令
selenium-standalone start
7
打開cmd窗口,輸入腳本的位置
8
運行自動化測試腳本
至此,webdriver+selenium+nodejs的自動化框架就搭建完成,大家盡情編寫js腳本吧。