最近測試規則,網頁上每條測試隻能手動點測試,想寫個腳本實作自動點選,網上收集資料可以用selenium實作,模拟人操作。
import selenium
from selenium import webdriver
from selenium.webdriver.common.by import By
現收集如下材料:
使用selenium模拟打開谷歌浏覽器:
1、要下載下傳浏覽器版本對應的ChromeDriver驅動包:下載下傳網址
2、打開谷歌浏覽器
# 找打剛才安裝的chromedriver.exe的位置
browser = webdriver.Chrome(executable_path =r\'D:\chromedriver.exe\')
此時電腦就會新打開谷歌浏覽器,并顯示受到自動測試軟體控制

3、打開某個網址:
browser.get(\'https://www.baidu.com/\')
ps:也可以在此浏覽器中自行操作打開網址,找到想要操作的頁面,此時停留的頁面,就是程式裡可以操作的頁面。
4、元素定位
參考:史上最全!Selenium元素定位的30種方式
5、常用事件
點選:參考Selenium實作點選click()
6、程式延遲執行
import time
time.sleep(360) # 延遲執行360秒
7、動态更改谷歌浏覽器預設下載下傳路徑
整理的時候找不到是哪個大神寫的了,當時用了他的代碼下面貼出來:
def set_download_path(driver, path):
"""
禁止下載下傳彈窗,設定下載下傳路徑
"""
# path = path.rstrip(os.sep)
driver.command_executor._commands["send_command"] = ("POST", \'/session/$sessionId/chromium/send_command\')
params = {\'cmd\': \'Page.setDownloadBehavior\',
\'params\': {\'behavior\': \'allow\', \'downloadPath\': path}}
driver.execute("send_command", params)
if not os.path.exists(path):
os.makedirs(path)
--------------------------------------------------------分割------------------------------------------------------------------------------------------
第一需求是在這樣一個頁面中,等待上一條測試完成後,自動點選下一條‘開始測試’(測試完成的及進行中的就不會在出現‘開始測試’字樣)
初級實作功能代碼:
由于短時間沒找打怎麼監控進度到100%的方法,通過一個簡單方法:每條測試大概需要5分鐘左右,就設定每隔6分鐘點選一次,也基本滿足需求。
import selenium
from selenium import webdriver
from selenium.webdriver.common.by import By
import time
# 打開谷歌浏覽器,
browser = webdriver.Chrome(executable_path =r\'D:\chromedriver.exe\')
# 手動找到需要操作的頁面
for j in range(5): # 需要點選5頁
f= browser.find_elements_by_link_text(\'開始測試\') # 找到目前頁所有的開始測試元素
for i in range(len(f)): # 循環每隔6分鐘點選一個
f[i].click()
time.sleep(360)
browser.find_elements_by_class_name(\'ant-pagination-item-link\')[2].click() # 這一頁的開始測試都點完後,點選下一頁
time.sleep(4)
改進版,發現有進度的時候會有class:ant-progress-text,text會顯示進度百分之多少,測試成功後就會變成其他,是以通過判斷當時是否有ant-progress-text來判斷目前是否測試完畢,并可以開始下一條測試。
for j in range(5):
f= browser.find_elements_by_link_text(\'開始測試\')
for i in range(len(f)):
f[i].click()
time.sleep(5)
while True:
try:
browser.find_element_by_class_name(\'ant-progress-text\').text # 如果沒有ant-progress-text,會報錯
time.sleep(30)
except :
break
browser.find_elements_by_class_name(\'ant-pagination-item-link\')[3].click()
time.sleep(4)
第二個需求是對于測試完畢的需要下載下傳測試結果,點選‘下載下傳測試結果’會下載下傳一個csv檔案,下面實作自動下載下傳,且每個檔案儲存在新檔案中,檔案夾以測試名稱命名。
r = browser.find_elements_by_link_text(\'下載下傳測試結果\') # 找下載下傳測試結果
a = browser.find_elements_by_xpath("//tbody//tr") # 找每條測試的名稱
for i in range(9):
file_name = a[i].text.split(\' \')[2]
path = r\'C:\Users\99452\Desktop\下載下傳結果\{}\'.format(file_name)
set_download_path(browser,path) # 用到上述第7點更改預設檔案夾的函數
time.sleep(10)
r[i].click()
time.sleep(20)
————————————————
版權聲明:本文為CSDN部落客「胡桃夾子zy」的原創文章,遵循CC 4.0 BY-SA版權協定,轉載請附上原文出處連結及本聲明。
原文連結:https://blog.csdn.net/hutao_ljj/article/details/112059679