selenium+python實現查詢和下載文件


在bug管理系統上,按項目查詢出來所有的bug,然后點擊導出按鈕,導出這個項目所有的bug,用selenium+python實現

操作步驟如下:

1、打開網址url

2、輸入用戶名和密碼,點擊登錄(不需要驗證碼)

3、在項目框內輸入項目編碼,點擊查詢按鈕

4、點擊導出按鈕,彈框提示導出成功(導出不是同步導出的,這里點擊導出只是發起了一個導出操作,等待1到2分鍾后,再去導出頁面查看是否導出成功)

5、去導出頁面下載導出的文件 xxxxxx.xls

因為之前沒有用過爬蟲工具,但是知道有個selenium這個自動化測試框架,本身這個需求就很簡單,找到幾個輸入框和按鈕,順序操作就行,登錄也不需要驗證碼

python用的是3.5版本,selenium用的是3.3 GeckoDriv

from selenium import webdriver from selenium.webdriver.common.keys import Keys browser = webdriver.Firefox() browser.get('http://www.yahoo.com') assert 'Yahoo!' in browser.title elem = browser.find_element_by_name('p')  # Find the search box
elem.send_keys('seleniumhq' + Keys.RETURN) browser.quit()

 

先在selenium上抄了一個例子,一運行,發現了少了GeckoDriver,下載GeckoDriver,放在一個path路徑下

from selenium import webdriver from selenium.webdriver.common.keys import Keys browser = webdriver.Firefox() browser.get('http://www.xxxxxxx.com')  #這里地址用的是查詢頁面,如果沒有登錄就會跳轉到登錄頁面,登錄之后會自動跳到查詢頁面 #assert 'Yahoo!' in browser 這行不要了
 username=browser.find_element_by_name('uid')#獲取username輸入框
username.clear()  #先清空輸入框
username.send_keys(username)  #輸入用戶名
 password=browser.find_element_by_name('password')#獲取username輸入框
password.clear()  #先清空輸入框
password.send_keys(password)  #輸入密碼
password.send_keys(Keys.RETURN)  #輸入密碼之后輸入RETURN特殊鍵實現登錄,不用再定位登錄按鈕

以上代碼就實現了用戶登錄

 
         
from selenium import webdriver from selenium.webdriver.common.keys import Keys from time   #time。sleep()實現延時
browser = webdriver.Firefox() browser.get('http://www.xxxxxxx.com')  #這里地址用的是查詢頁面,如果沒有登錄就會跳轉到登錄頁面,登錄之后會自動跳到查詢頁面 #assert 'Yahoo!' in browser 這行不要了
 username=browser.find_element_by_name('uid')#獲取username輸入框
username.clear()  #先清空輸入框
username.send_keys(username)  #輸入用戶名
 password=browser.find_element_by_name('password')#獲取username輸入框
password.clear()  #先清空輸入框
password.send_keys(password)  #輸入密碼
password.send_keys(Keys.RETURN)  #輸入密碼之后輸入RETURN特殊鍵實現登錄,不用再定位登錄按鈕
time.sleep(3)  #延時3秒等待頁面跳轉
browser.find_element_by_name('項目').send_keys(ID)  #定位到項目ID輸入框並輸入項目ID
browser.find_element_by_id('search').click()  #定位到搜索按鈕,並點擊
time.sleep(3)  #延時等待搜索結果
browser.find_element_by_xpath('\\').click() #定位到導出按鈕,並點擊
time.sleep(3)  #延時 彈出導出提示框,提示用戶到另外一個頁面下載導出數據
browser.find_element_by_xpath('\\').click()#定位到彈出框上的確定按鈕,點擊確定隱藏提示框,以方便導出下一個項目的bug列表
browser.get('http://www.yyyyyy.com')  #跳轉到下載頁面
filelist=browser.find_elements_by_xpath('\\')  #定位到文件列表中所有的文件
for file in filelist: file.click() #點擊保存文件 這里有個問題,firefox保存文件會有一個提示框,讓你選擇是保存還是打開
 
        

 

 

百度了一下,在這里找到了方法http://www.51testing.com/html/50/598350-860378.html

 

設置firefox的Profile:

 

browser.download.dir:指定下載路徑

 

browser.download.folderList:設置成 2 表示使用自定義下載路徑;設置成 0 表示下載到桌面;設置成 1 表示下載到默認路徑

 

browser.download.manager.showWhenStarting:在開始下載時是否顯示下載管理器

 

browser.helperApps.neverAsk.saveToDisk:對所給出文件類型不再彈出框進行詢問

 

profile = webdriver.FirefoxProfile() profile.set_preference('browser.download.dir', 'd:\\') profile.set_preference('browser.download.folderList', 2) profile.set_preference('browser.download.manager.showWhenStarting', False) profile.set_preference('browser.helperApps.neverAsk.saveToDisk', 'application/zip') driver = webdriver.Firefox(firefox_profile=profile)

 

最后就是延時,剛開始用的是time.sleep()實現延時,運行很慢,百度一下,在這里找到了,http://www.cnblogs.com/zl0372/p/selenium_python.html

通過implicitly_wait()實現智能等待

最終代碼:

from selenium import webdriver from selenium.webdriver.common.keys import Keys from time   #time。sleep()實現延時
 profile = webdriver.FirefoxProfile() profile.set_preference('browser.download.dir', 'd:\\') profile.set_preference('browser.download.folderList', 2) profile.set_preference('browser.download.manager.showWhenStarting', False) profile.set_preference('browser.helperApps.neverAsk.saveToDisk', 'application/zip') browser = webdriver.Firefox(firefox_profile=profile) browser.get('http://www.xxxxxxx.com')  #這里地址用的是查詢頁面,如果沒有登錄就會跳轉到登錄頁面,登錄之后會自動跳到查詢頁面 #assert 'Yahoo!' in browser 這行不要了
 username=browser.find_element_by_name('uid')#獲取username輸入框
username.clear()  #先清空輸入框
username.send_keys(username)  #輸入用戶名
 password=browser.find_element_by_name('password')#獲取username輸入框
password.clear()  #先清空輸入框
password.send_keys(password)  #輸入密碼
password.send_keys(Keys.RETURN)  #輸入密碼之后輸入RETURN特殊鍵實現登錄,不用再定位登錄按鈕
browser.implicitly_wait(5)  #延時3秒等待頁面跳轉
browser.find_element_by_name('項目').send_keys(ID)  #定位到項目ID輸入框並輸入項目ID
browser.find_element_by_id('search').click()  #定位到搜索按鈕,並點擊
browser.implicitly_wait(5)  #延時等待搜索結果
browser.find_element_by_xpath('\\').click() #定位到導出按鈕,並點擊
leep(3  #延時 彈出導出提示框,提示用戶到另外一個頁面下載導出數據
browser.find_element_by_xpath('\\').click()#定位到彈出框上的確定按鈕,點擊確定隱藏提示框,以方便導出下一個項目的bug列表
browser.get('http://www.yyyyyy.com')  #跳轉到下載頁面
filelist=browser.find_elements_by_xpath('\\')  #定位到文件列表中所有的文件
for file in filelist: file.click() #點擊保存文件 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM