selenium 簡單案例 <批量下載文件> <網頁自動化點擊上報>

一、批量下載文件

網頁分析
在這里插入圖片描述
點擊跳轉到下載頁面
在這里插入圖片描述

from selenium import webdriver
import timedef get_link_list():# 創建瀏覽器對象driver = webdriver.Chrome(executable_path=r'C:\Users\nlp_1\Desktop\chromedriver\chromedriver-win32\chromedriver.exe')url = 'https://www.tendacn.com/en/service/download-cata-11.html'driver.get(url)# 等待driver.implicitly_wait(10)css_elem = driver.find_elements_by_css_selector('.dr_file > a')link_list = []for link in css_elem:page_link = link.get_attribute('href')print(page_link)link_list.append(page_link)driver.close()driver.quit()return link_listdef get_download_links(link_list):download_link_list = []for i,link in enumerate(link_list):if i == 0:driver = webdriver.Chrome(executable_path=r'C:\Users\nlp_1\Desktop\chromedriver\chromedriver-win32\chromedriver.exe')driver.get(link)else:js = f'window.open("{link}")'driver.execute_script(js)# 每打開一個鏈接切換到該頁面也就是最新的這個driver.switch_to.window(driver.window_handles[-1])download_elem = driver.find_element_by_css_selector('.downbtns > a')download_link = download_elem.get_attribute('href')download_link_list.append(download_link)totals = len(download_link_list)print(f'一共有{totals}個下載鏈接!')driver.quit()return download_link_listdef download_file(download_link_List):for i,doanload_link in enumerate(download_link_List):js = f'window.open("{doanload_link}")'driver.execute_script(js)print(30*'-')print(doanload_link)time.sleep(6)print(f'第{i + 1}個文件正在下載中……')# 程序執行入口
if __name__ == '__main__':link_list = get_link_list()download_link_List = get_download_links(link_list)options = webdriver.ChromeOptions()options.add_argument('--ignore-certificate-errors')driver = webdriver.Chrome(options=options)download_file(download_link_List)

二、網頁自動化點擊上報

在這里插入圖片描述

在這里插入圖片描述

# 指定賬戶名和密碼登錄
def login():# 隨機點一下 ,以便顯示登錄頁面driver.find_element_by_id('bodyMain').click()# id=“username”是打開的網址中,賬號登錄的輸入框,輸入字符串“用戶名”username = input('請輸入你的用戶名:')password = input('請輸入你的密碼:')print('登錄中……')driver.find_element_by_id('username').send_keys(username)driver.find_element_by_id('password').send_keys(password)# id="submit"是點擊登錄, click() 是模擬點擊driver.find_element_by_id("submit").click()time.sleep(2)print('登錄成功\n')

在這里插入圖片描述

# 點擊 風險分級管控driver.implicitly_wait(5)risk_grade_control = driver.find_element_by_link_text("風險分級管控")risk_grade_control.click()time.sleep(2)print('已點擊【風險分級管】\n')

在這里插入圖片描述

# 點擊 風險點隱患上報driver.implicitly_wait(5)xpth = driver.find_element_by_xpath("//div[@data-tid='e9c7735c77284173a243f8e47999ee8d']")xpth.click()time.sleep(2)print('已點擊【風險點隱患上報】\n')

在這里插入圖片描述

注意:可能點擊 “風險點隱患上報” 右邊頁面是異步加載的找不到對應的文本按鈕

    # 重定向頁面,確保操作的是當前窗口頁面內容driver.switch_to.default_content()frame = driver.find_elements_by_tag_name('iframe')[0]driver.switch_to.frame(frame)time.sleep(1)

完整代碼

# 導入相關庫和模塊
from selenium import webdriver
import time# 指定賬戶名和密碼登錄
def login():# 隨機點一下 ,以便顯示登錄頁面driver.find_element_by_id('bodyMain').click()# id=“username”是打開的網址中,賬號登錄的輸入框,輸入字符串“用戶名”username = input('請輸入你的用戶名:')password = input('請輸入你的密碼:')print('登錄中……')driver.find_element_by_id('username').send_keys(username)driver.find_element_by_id('password').send_keys(password)# id="submit"是點擊登錄, click() 是模擬點擊driver.find_element_by_id("submit").click()time.sleep(2)print('登錄成功\n')# 免輸入密碼和賬戶名登錄
def vip_login():# 蘇州五合汽車部件制造有限公司# 張家港市友成高新材料有限公司print('這是vip直接登錄模式(免輸戶名和密碼),登錄中……')driver.find_element_by_id('bodyMain').click()driver.find_element_by_id('username').send_keys('蘇州五合汽車部件制造有限公司')driver.find_element_by_id('password').send_keys('ghj@18zXX')driver.find_element_by_id("submit").click()time.sleep(2)print('vip免輸入模式,登錄成功!\n')# 到達要處理的頁面
def to_page():# 點擊 風險分級管控driver.implicitly_wait(5)risk_grade_control = driver.find_element_by_link_text("風險分級管控")risk_grade_control.click()time.sleep(2)print('已點擊【風險分級管】\n')# 點擊 風險點隱患上報driver.implicitly_wait(5)xpth = driver.find_element_by_xpath("//div[@data-tid='e9c7735c77284173a243f8e47999ee8d']")xpth.click()time.sleep(2)print('已點擊【風險點隱患上報】\n')# 重定向頁面,確保操作的是當前窗口頁面內容driver.switch_to.default_content()frame = driver.find_elements_by_tag_name('iframe')[0]driver.switch_to.frame(frame)time.sleep(1)# 點擊 無隱患,處理一個頁面
def deal_one_page(index=0):time.sleep(2)print()print(30 * '-')print()for i in range(20):if index == totals // 20 and i == totals % 20:print(f'總共{20 * index + i}條,已經全部點擊完成!')driver.close()breakprint(f'第{20 * index + i + 1}條開始點擊處理……')if i == 0:driver.find_elements_by_partial_link_text('無隱患')[i].click()driver.find_elements_by_partial_link_text('無隱患')[i].click()print('等待彈窗出現,并準備點擊【確定】……')time.sleep(2)try:driver.implicitly_wait(5)  # secondselem_yes = driver.find_element_by_partial_link_text('確定')elem_yes.click()except:print('稍等,正在處理……')  # 再次重點擊‘無隱患’driver.find_elements_by_partial_link_text('無隱患')[i].click()time.sleep(3)  # 之前5秒合適driver.implicitly_wait(5)  # secondselem_yes = driver.find_element_by_partial_link_text('確定')elem_yes.click()print('已經點擊【確定】,彈窗正在退出……')print(f'第{20 * index + i + 1}條無隱患已經上報!')print()print(30 * '-')print()time.sleep(1)# 點擊 無隱患,翻頁并處理全部頁面
def deal_all_page(totals):for index in range(totals // 20 + 1):time.sleep(3)deal_one_page(index)print()print(f'-----第{index + 1}頁已經完成-----')print(f'--------------------------------')print()try:driver.find_element_by_id('mini-25').click()except:driver.find_element_by_id('mini-25').click()time.sleep(2)def get_totals():driver.implicitly_wait(10)  # secondsdriver.find_element_by_id('mini-26').click()driver.implicitly_wait(10)end_page_elem = driver.find_elements_by_xpath(".//span[@class='mini-pager-index']/span")[0]end_page = end_page_elem.text.strip('/')time.sleep(3)end_page_count = driver.find_elements_by_partial_link_text('無隱患')totals = (int(end_page) - 1) * 20 + len(end_page_count)print(f'一共{totals}條記錄待點擊處理')driver.implicitly_wait(10)  # secondsdriver.find_element_by_id('mini-23').click()time.sleep(3)return totalsdef main():# vip_login()login()to_page()time.sleep(3)global totalstotals = get_totals()deal_all_page(totals)if __name__ == "__main__":totals = None# 調用環境變量指定的 Chrome 瀏覽器創建瀏覽器對象driver = webdriver.Chrome()# get 方法會一直等到頁面被完全加載,然后才會繼續程序,通常測試會在這里選擇print('正在啟動網頁自動化辦公程序……\n')time.sleep(2)driver.get("http://221.224.155.68:9090/cas/login?service=http%3A%2F%2F221.224.155.68%3A9090%2Flesweb3%2F")print('正在打開目標網站……\n')time.sleep(2)main()

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/163461.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/163461.shtml
英文地址,請注明出處:http://en.pswp.cn/news/163461.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

微信報名怎么做_輕松便捷的數字化報名體驗

微信報名:輕松便捷的數字化報名體驗 在這個數字化時代,微信已經成為我們生活中不可或缺的一部分。它不僅僅是一個社交平臺,更是一個功能強大的綜合性工具。其中,微信報名功能更是給我們的生活帶來了極大的便利。本文將詳細介紹微…

Django之cookie和session

文章目錄 Cookie的介紹Cookie的由來什么是CookieCookie原理Cookie覆蓋瀏覽器查看Cookie 在Django中操作Cookie設置Cookie查詢瀏覽器攜帶的Cookie刪除Cookie Cookie校驗登錄sessionSession的由來Session設置查看、更新Session值刪除Session值Seesion的其他方法Session的其他配置…

企業微信機器人:自動化辦公的未來已來!

導語:隨著科技的迅速發展,人工智能已經逐漸滲透到我們的日常生活和工作中。而企業微信機器人的出現,更是開啟了自動化辦公的新紀元。本文將為您詳細解析企業微信機器人的功能、優勢以及如何為企業帶來實質性的價值。 一、企業微信機器人的功…

擴展外部eMMC存儲

By Toradex胡珊逢 簡介 存儲器的嵌入式設備中扮演著重要角色,上面不僅安裝有操作系統,同時也保存著應用程序和運行日志等。對于存儲器如 eMMC,寫入的數據量決定其使用壽命,對于有大量日志記錄的應用,通常可以選用一個…

JavaScript:監聽事件

該方法用于向瀏覽器窗口注冊事件監聽器,當指定的事件(如單擊、按鍵按下)被觸發時,瀏覽器會自動調用指定的函數(回調函數)。 window.addEventListener(event, function, useCapture); 參數說明&#xff1a…

洛谷題單--線性表

P3156 【深基15.例1】詢問學號 鏈接 : 【深基15.例1】詢問學號 - 洛谷 直接輸入&#xff0c;然后輸出a[i]即可; 代碼 : #include<iostream> #include<cstring> #include<algorithm> #include<vector> using namespace std; int main(){int n, q …

請手寫一個發布-訂閱的模式

發布-訂閱模式也是經典的設計模式之一&#xff0c;它在前端很多地方都有應用&#xff0c;比如javascript事件池&#xff0c;Vue的$on、$off&#xff0c;nodejs的events模塊和socket通信等等都有應用&#xff0c;也是前端面試比較火熱的考點之一&#xff0c;接下來給大家詳細介紹…

cefsharp119.4.30(cef119.4.3,Chromium119.0.6045.159)版本升級體驗支持H264及其他多個H264版本

Cefsharp119.4.30,cef119.4.3,Chromium119.0.6045.159 此更新包括一個高優先級安全更新 This update includes a high priority security update. 說明:此版本119.4.3支持H264視頻播放(需要聯系我),其他版本。.NETFramework 4.6.2 NuGet Gallery | CefSharp.WinForms 119.…

運動規劃Motion-Planning隨筆

online verification技術 實時安全校驗技術&#xff1a;留一手 首先計算能否通過剎車這種方式得到一條安全軌跡&#xff0c;&#xff08;讓速不讓道&#xff09;&#xff0c;當剎車有可能碰撞到行人或其他車輛時&#xff0c;則判斷變道是否會產生碰撞。如果能變道&#xff0…

深度學習之七(深度信念網絡和受限玻爾茲曼機器)

概念 深度信念網絡(Deep Belief Networks,DBN)和受限玻爾茲曼機器(Restricted Boltzmann Machines,RBMs)都是無監督學習的模型,通常用于特征學習、降維和生成數據。 受限玻爾茲曼機器(RBM): 結構: RBM 是一個兩層神經網絡,包括一個可見層和一個隱藏層。這兩層之間…

qt按照不同編碼格式讀取文字(UTF-16LE,UTF-8,UTF-8BOM,UTF-16BE)

enum class EncodingFormat : int {ANSI 0,//GBKUTF16LE,UTF16BE,UTF8,UTF8BOM, }; EncodingFormat VideoPlayer::FileCharacterEncoding(const QString &fileName) {//假定默認編碼utf8EncodingFormat code EncodingFormat::UTF8;QFile file(fileName);if (file.open(QI…

「 系統設計 」 為什么要做架構分層?

「 系統設計 」 為什么要做架構分層&#xff1f; 參考&鳴謝 3.設計模式之分層思維&#xff1a;為什么要做代碼分層架構&#xff1f; 從零開始學架構&#xff08;八&#xff09;分層架構和設計模式 架構模式之分層架構總結 文章目錄 「 系統設計 」 為什么要做架構分層&…

解決 IDEA下VUE項目 @符號無法識別的問題

根目錄新建jsconfig.json {"compilerOptions": {"baseUrl": "./","paths": {"/*": ["src/*"]}},"exclude": ["node_modules","dist"] }

IT支持團隊的績效指標和最佳實踐

一名員工在遠程時因筆記本問題尋求IT支持&#xff0c;盡管他們多次嘗試排除故障&#xff0c;但由于缺乏專業知識&#xff0c;最終還是無法訪問工作所需的應用程序。這時&#xff0c;他們需要一名專業的 IT 技術人員來指導他們&#xff0c;但他們只能等待有人注意到并回應他們的…

海報設計必備:揭秘5款炙手可熱的設計工具

1.即時設計&#xff1a;能實現在線協作的海報設計軟件 即時設計作為 2020 年上線的國產設計工具&#xff0c;目前已經有了超百萬的注冊用戶&#xff0c;獲得了廣大設計師的一致好評。與其他傳統海報設計軟件相比&#xff0c;即時設計具有這幾個優點&#xff1a;一是所有功能都…

Chrome 訪問不了項目?10080端口 ERR_UNSAFE_PORT:問題原因 / 解決方案

文章目錄 被禁用端口列表解決方法方法一、更換端口 / 使用代理 / 使用域名方法二、對瀏覽器下手WindowsMac 最近有客戶反饋&#xff0c;在chrome瀏覽器中訪問不了項目&#xff0c;其他瀏覽器都是正常的。 &#xff1f;奇了怪了&#xff0c;難道客戶對chrome做了什么操作&#x…

Docker | Docker入門安裝

?作者簡介&#xff1a;大家好&#xff0c;我是Leo&#xff0c;熱愛Java后端開發者&#xff0c;一個想要與大家共同進步的男人&#x1f609;&#x1f609; &#x1f34e;個人主頁&#xff1a;Leo的博客 &#x1f49e;當前專欄&#xff1a;Docker系列 ?特色專欄&#xff1a; My…

探索WebStorm 2023 Mac/win:最強大的JavaScript開發工具

在當今的軟件開發領域&#xff0c;JavaScript已經成為了一種不可或缺的編程語言。而在眾多的JavaScript開發工具中&#xff0c;WebStorm一直以其強大的功能和友好的用戶界面脫穎而出。現在&#xff0c;我們迎來了全新的WebStorm 2023版本&#xff0c;它將帶給開發者們更加出色的…

有機紡織品OCS認證

【有機紡織品OCS認證】 有機產品是指按照這種方式生產和加工的產品。產品符合國際或者國家有機產品要求標準&#xff0c;并通過國家認證機構認證的一切農副產品及其加工品&#xff0c;包括糧食、蔬菜、水果、奶制品、禽畜產品、天然纖維等。 有機紡織品認證是指在使用經過國際或…

華中科技大學李松課題組,利用機器學習預測多孔材料水吸附等溫線

多孔材料的水吸附等溫線是一個非常重要的參數&#xff0c;但這一參數的獲得并不容易。這是因為多孔材料種類過多、結構多元&#xff0c;通過實驗和計算的方式獲得水吸附等溫線數據成本過高&#xff0c;耗時過長。 華中科技大學的李松課題組&#xff0c;建立了一個兩步機器學習模…