天繼續(xù)使用Drissionpage框架來實現(xiàn)內(nèi)部系統(tǒng)的網(wǎng)頁自動化處理,編碼過程中碰到2個新問題,記錄一下解決方法:
自動輸入賬號和密碼登錄的代碼非常簡單,如下所示:
from DrissionPage import WebPage,ChromiumOptions
co=ChromiumOptions()
page=WebPage(chromium_options=co)
page.set.window.max()
page.get("http://xxx:8080")
# 輸入賬號密碼,自動登錄
page.ele("#userName").input("zhangsan")
page.ele("#userPwd").input("123456")
page.ele(".formsubmit").click()
# 點擊待辦任務圖標
page.ele("#daiban").ele("tag:img").click()
但是在系統(tǒng)首頁面點擊待辦任務圖標時,一直報錯:無法定位元素。根據(jù)瀏覽器開發(fā)者工具元素定位確認沒有問題,調(diào)試跟蹤發(fā)現(xiàn)點擊待辦任務圖標時page對象中的html竟然是登錄界面的腳本,才發(fā)現(xiàn)系統(tǒng)首頁在新彈出的一個瀏覽器窗口中。
經(jīng)過多次嘗試,發(fā)現(xiàn)Drissionpage獲取新彈出瀏覽器頁面page的一種簡便操作,直接get頁面的url即可。修改代碼如下:
# 點擊待辦任務圖標
page.get("http://xxx:8080/sword?ctrl=Mh001LoginCtrl_openWin")
page.ele("#daiban").ele("tag:img").click()
另外,在處理具有多個類的網(wǎng)頁元素時,精確匹配類名查找會定位不到,如以下類名:
class="sGrid_data_row_div sGrid_data_row_div_dan "
調(diào)試跟蹤中發(fā)現(xiàn),類名中間的空格發(fā)生變化導致,查找Drissionpage官網(wǎng)說明,有模糊匹配的方法,則可以輕松搞定。
items=page.eles('.:sGrid_data_row_div')
使用過程中感覺Drissionpage定位網(wǎng)頁元素的方法齊全,寫法簡練。
擊右上方紅色按鈕關注“小鄭搞碼事”,每天都能學到知識,搞懂一個問題!
大家好!我是/小鄭搞碼事/的小鄭
今天和大家分享一下JS如何操作瀏覽器窗口。只講如何打開一個新窗口
先來看效果圖
上面這個圖界面效果就是我們要實現(xiàn)的。
我們常常需要創(chuàng)建一個新窗口,用來向用戶顯示額外的信息,同時又避免他們正在閱讀的信息消失。從實現(xiàn)方案上來看,盡管我們可以用HTML打開一個新的瀏覽器窗口,但是使用JavaScript可以對新窗口的內(nèi)容和特性進行更多的控制。
接下來,我們看一下怎么實現(xiàn)的
定義一個打開新窗口的函數(shù)newWindow。如上面代碼所示,變量catWindow包含一個新的窗口對象,這個對象引用圖像文件icon.png,這個新窗口的名稱是catWin,必須設置名稱,因為我們以后可能希望在a或另一個腳本中引用這個窗口。新窗口的寬度是350像素,高度是260像素,位置是左邊400,上邊400。
頁面中,包含一個onload事件處理程序,它調(diào)用newWinLinks函數(shù),newWinLinks循環(huán)遍歷頁面上的a,檢查是否有任何a包含class屬性值newWin。如果有,就設置這個a元素的onclick事件處理程序,從而,當點擊這個a時,調(diào)用newWindow函數(shù)。
總結一下
需要注意兩個地方:
1、newWindow中,在寬度和高度參數(shù)中的逗號之間不能有任何空格,如果有空格,那么腳本可能在某些瀏覽器中無效,總地來說,當腳本出現(xiàn)錯誤,需要進行高度時,要首先查找這樣的小問題。
2、比如向窗口中添加參數(shù)時,希望窗口具有工具欄,地址欄,滾動條
toolbar=yes,location=yes,scrollbars=yes
參數(shù)默認是no,可以不填。當然瀏覽器上表現(xiàn)也有不同,需要知道。
何網(wǎng)頁中彈出選項自動選擇,比如在看一個視頻,看完后會彈出一個小窗口,需要點擊小窗口中的一個選項才能繼續(xù)播放下一個視頻,自動化完成這個動作而不需要手動點擊
為了實現(xiàn)這個功能,可以使用 JavaScript 和瀏覽器的開發(fā)者工具。這里是一個簡單的步驟,可以幫助實現(xiàn)自動點擊網(wǎng)頁上的選項。
javascript
function autoClick() {
const selector = 'PASTE_YOUR_CSS_SELECTOR_HERE';
const button = document.querySelector(selector);
if (button) {
button.click();
}
}
const interval = 5000; // 檢查并嘗試點擊的時間間隔(毫秒)
setInterval(autoClick, interval);
將 PASTE_YOUR_CSS_SELECTOR_HERE 替換為剛剛復制的 CSS 選擇器。可以根據(jù)需要調(diào)整 interval 變量的值。
請注意,這種方法并不適用于所有網(wǎng)站,因為有些網(wǎng)站可能使用了復雜的結構或防止自動化操作的措施。在這種情況下,可能需要使用更高級的自動化工具,例如 Selenium WebDriver 或 Puppeteer。
*請認真填寫需求信息,我們會在24小時內(nèi)與您取得聯(lián)系。