1.關於selenium
(1)測試與瀏覽器的兼容性:測試應用程序能否兼容工作在不同瀏覽器和操作系統之上。
(2)測試系統功能:錄制用例自動生成測試腳本,用於回歸功能測試或者系統用例說明。
簡而言之,Selenium 就是一款可以錄制用戶操作, 幫助Web測試人員簡化重復勞動的工具。
2.selenium安裝
win+r,進入cmd,
然后輸入pip install selenium,等一會就安裝好了。
3.webdriver原理
WebDriver是按照Server-Client的模式設計的。
Server就是Remote Server, 可以是任意的瀏覽器。當我們的腳本啟動瀏覽器后,該瀏覽器就是Remote Server,她的職責就是等待Client發送請求並做出響應。
Client端簡單說就是我們寫的測試腳本。腳本中的一些行為比如打開瀏覽器,跳轉到指定的URL等操作就是以http請求的方式發送給被測試的瀏覽器,也就是Remote Server. Remote Server接受請求,執行相應操作,並在Response中返回執行狀態、返回值等信息。
4.下載安裝webdriver
Webdriver下載路徑:
http:// chromedriver. storage. googleapis. com/ index. html,用於驅動打開Chrome;
geckodriver下載路徑: https:// github. com/ moz illa/ geckodriver/releeases,用於驅動打開Firefox;
下載后放在python. exe相同目錄下( 我用的是谷歌瀏覽器,所以就下載的chromedriver) :
5.測試是否可用
出現了下面的結果,說明我們做好了准備工作,可以開始自動化了。
6.要做到自動化,我們就需要模仿鼠標和鍵盤的操作,我這里只用到了一些簡單的操作:
7.自動化在操作之前,要找到進行操作的位子,我可以根據網頁源代碼的標簽去找(標簽的屬性最好是唯一的)。
find_element _by_ id(a) #定位id=‘a’的地方
find_element_by_ name (a) #定位name=‘a'的地方
find_element_by_ class_name (a) #定位class=‘a’的地方
find_element_ by_ xpath()
find_element_ by_ css_ selector()
find_element_ by_ tag_ name ()
find_element_ by_ link_text() #定位文本鏈接的
find_element_by_ partial_link_text() #和上面的一樣,但我們可只截取鏈接的一部分
8.運行程序的全代碼
from selenium import webdriver import time first_url = 'http://www.mail.qq.com' driver = webdriver.Chrome() driver.get(first_url) driver.implicitly_wait(3) driver.maximize_window() #切換到iframe time.sleep(3) driver.switch_to.frame(driver.find_element_by_id('login_frame')) time.sleep(3) #點擊頭像進行登錄 driver.find_element_by_id('img_out_1147451366').click() time.sleep(2) #進入收件箱 driver.find_element_by_id('folder_1').click() time.sleep(2) #點擊寫信 driver.find_element_by_id('composebtn').click() time.sleep(3) #切換到iframe driver.switch_to.frame(driver.find_element_by_id('mainFrame')) #輸入收件人 driver.find_element_by_xpath("//*[@id='toAreaCtrl']/div[2]/input").send_keys('949709967@qq.com') time.sleep(2) #添加附件 driver.find_element_by_name('UploadFile').send_keys(r'C:\Users\11474\Desktop\2019年下半年英語四級筆試准考證(王龍).zip') #輸入正文,先切入到iframe driver.switch_to_frame(driver.find_element_by_class_name('qmEditorIfrmEditArea')) time.sleep(3) #輸入正文 driver.find_element_by_xpath("ml/body").send_keys('小哥哥,愛你喲') time.sleep(3) #切出iframe driver.switch_to_default_content() #再切入到‘發送’按鈕的iframe driver.switch_to.frame(driver.find_element_by_id('mainFrame')) time.sleep(3) #郵件發送 driver.find_element_by_name('sendbtn').click()
運行結果要錄屏就不發了。
------------恢復內容結束------------