天天看點

記錄-selenium簡單實作自動點選操作

最近測試規則,網頁上每條測試隻能手動點測試,想寫個腳本實作自動點選,網上收集資料可以用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\')

此時電腦就會新打開谷歌浏覽器,并顯示受到自動測試軟體控制

記錄-selenium簡單實作自動點選操作

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)

--------------------------------------------------------分割------------------------------------------------------------------------------------------

記錄-selenium簡單實作自動點選操作

第一需求是在這樣一個頁面中,等待上一條測試完成後,自動點選下一條‘開始測試’(測試完成的及進行中的就不會在出現‘開始測試’字樣)

初級實作功能代碼:

由于短時間沒找打怎麼監控進度到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

記錄-selenium簡單實作自動點選操作