15-通過JS代碼處理窗口滾動條

????????selenium并不是萬能的,頁面上有些操作無法實現時,就需要借助JS代碼來完成了。selenium提供了一個方法:execute_script(),可以執行JS腳本代碼。

????????比如:當頁面上的元素超過一屏后,想操作屏幕下方的元素,是不能直接定位到的,會報元素不可見的錯誤。這時候需要借助滾動條來拖動屏幕,使被操作的元素顯示在當前的屏幕上。而滾動條是無法直接用定位工具來進行定位的,selenium也沒有提供直接的方法去控制滾動條,這時候只能借助JS代碼來完成。

一、JavaScript簡介

????????為什么要了解JavaScript?因為有些特殊的操作是selenium+python無法直接完成的,而JavaScript剛好是這方面的強項,所以算是一個很好的補充。

????????JavaScript是一種運行在瀏覽器中的解釋型編程語言:http://www.w3school.com.cn/js/index.asp4。

二、縱向滾動條

1)滾動條回到頂部
from selenium import webdriver
import timedriver = webdriver.Chrome()
driver.get('https://xa.ganji.com/')
time.sleep(1)# 滾動條回到頂部
js = "window.scrollTo(0, 0)"
driver.execute_script(js)
2)滾動條拉到底部
from selenium import webdriver
import timedriver = webdriver.Chrome()
driver.get('https://xa.ganji.com/')
time.sleep(1)# 滾動條拉到底部
js = "window.scrollTo(0, document.body.scrollHeight)"
driver.execute_script(js)

--scrollHeight:獲取對象的滾動高度。
--scrollWidth:獲取對象的滾動寬度。

三、橫向滾動條

????????有時候瀏覽器頁面需要左右滾動(一般屏幕最大化后,左右滾動的情況就很少見了)。通過scrollTo(x, y)方法可以控制橫向和縱向滾動條,其中第一個參數x是橫向距離,第二個參數y是縱向距離。

from selenium import webdriver
import timedriver = webdriver.Chrome()
driver.get('https://xa.ganji.com/')
time.sleep(1)js = "window.scrollTo(100, 400);"
driver.execute_script(js)

四、元素聚焦

????????用上面的方法可以解決拖動滾動條的位置問題,但是有時候無法確定我需要操作的元素在什么位置,有可能每次打開的頁面不一樣,元素所在的位置也不一樣,怎么辦呢?

????????這個時候我們可以先讓頁面直接跳到元素出現的位置,然后就可以進行操作了,同樣需要借助JS代碼來實現。

from selenium import webdriver
import timedriver = webdriver.Chrome()
driver.get('https://xa.ganji.com/')
time.sleep(1)# 元素聚焦
target = driver.find_element('xpath', '//*[@id="app"]/div/div[2]/div[3]/div[1]')
driver.execute_script("arguments[0].scrollIntoView();", target)

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

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

相關文章

MyBatis查詢功能

MyBatis的各種查詢功能 1、若查詢出的數據只有一條 (1)可以通過實體類對象或者集合接收 (2)可以通過List集合接收 (3)可以通過map集合接收 結果:{password123456, sex女, id8, age22, email1234qq.com, usernameadmin4} 2、若查詢出來的數據有…

[leetcode hot 150]第一百零八題,將有序數組轉換為二叉搜索樹

題目:給你一個整數數組 nums ,其中元素已經按 升序 排列,請你將其轉換為一棵 平衡二叉搜索樹。 給定一個有序的整數數組,我們需要構建一棵平衡的二叉搜索樹。平衡二叉樹是指任意一個節點的左右子樹的高度差不超過1。 由于給定的數組是有序的…

阿里云計算學習筆記(一)

運維管理 運維管理(Operation and Maintenance Management, 簡稱O&M管理)是指通過科學的管理方法和技術手段,對IT系統和基礎設施進行監控、維護、優化和保障,以確保系統的高可用性、穩定性、安全性和性能。運維管理涵蓋了硬件…

Prime1 - 提權的另一種解法,徹底搞懂OpenSSL解密滲透提權,超強思路版。

提權枚舉 現在我們直接從低權限用戶開始;我們先按照提權步驟,簡單的系統枚舉 雖然我們知道可以利用系統版本低進行內核提權,內核提權雖然比較快比較方便,但也比較暴力,缺點非常明顯;很容易導致系統服務中…

【云原生】Kubernetes----POD控制器

目錄 引言 一、Pod控制器概述 二、Pod控制器的種類 (一)ReplicaSet (二)Deployment (三)StatefulSet (四)DaemonSet (五)Job 三、使用POD控制器 &a…

【Seafile】Seafile容器版文件刪除后存儲空間不釋放問題解決

Seafile是一款非常優秀的網盤系統,我們可以根據官方文檔,在本地虛擬機研究Seafile免費版的安裝和使用,安裝建議采用使用docker容器的方式。 不過在使用過程中,剛接觸的小伙伴可能會遇到這樣的問題: 刪除網盤里面的文…

數據賦能(106)——方法論:描述模式與AI——批量處理

在一系列相似的主題內容進行編寫時,可以采用批處理的方式。主要步驟如下: 1、確定主題內容模式。如:各個主題的概述中,包括如下內容模式項目:工作主要目的、工作重要性、工作核心內容、工作本質 2、確定模式的各項內…

C++設計模式-狀態模式

文章目錄 28. 狀態模式 運行在VS2022,x86,Debug下。 28. 狀態模式 狀態模式讓一個對象的行為隨著內部狀態的改變而改變,而該對象也像換了類一樣。應用:如在游戲開發中,游戲有不同場景,如主菜單、開始、戰斗…

在leafet上畫圓、多邊形、線、矩形

在leaflet上畫圓、多邊形、線、矩形 <template><div id"map" class"map"></div> </template><script> import L from leaflet; export default {data () {return {myGroup: ,};},mounted () {this.initMaps()this.huizhiro…

Houdini的PythonScript基本使用

前言 Houdini內置了Python腳本和相應的編輯器, 很多時候想靈活的制作各種Houdini工具, 基本是必須用到 Python。Houdini官方的python提供了非常完善的接口, 比如可以創建各種節點&#xff0c;連接各種節點&#xff0c;遍歷節點各種數據&#xff0c;遍歷節點參數等等。 Houdin…

Spring中Bean的生命周期詳解

目錄 Bean的定義和作用Bean的生命周期概述Bean實例化階段依賴注入階段初始化階段Bean的使用銷毀階段完整的Bean生命周期流程示例代碼總結 Bean的定義和作用 在Spring框架中&#xff0c;Bean是指由Spring IoC容器管理的Java對象。Bean是構建Spring應用程序的基本單元&#xf…

word避免畫質畫質模糊方法

問題描述&#xff1a; ??近期寫文檔時會高頻率貼圖&#xff0c;粘圖過程中發現Word會自動壓縮圖片畫質&#xff0c;而且壓縮得很嚴重&#xff0c;下面是一幅圖被壓縮前后的畫質對比 &#xff08;圖片壓縮前&#xff09; &#xff08;圖片壓縮后&#xff09; 解決方案&#x…

基于JSP的九宮格日志網站

你好呀&#xff0c;我是學長貓哥&#xff01;如果有需求可以文末加我。 開發語言&#xff1a;Java 數據庫&#xff1a;MySQL 技術&#xff1a;JSP技術 工具&#xff1a;瀏覽器/服務器&#xff08;B/S&#xff09;結構 系統展示 首頁 管理員功能模塊 用戶功能模塊 摘要 本…

GPT-4o VS GPT-3.5 完勝

前言&#xff1a; 最近&#xff0c;GPT-4o已經限時免費開放了&#xff0c;試了一下&#xff0c;然后&#xff0c;說我的時間到了&#xff0c;然后&#xff0c;有給我轉到3.5&#xff0c;正好遇到一個問題做一下對吧&#xff0c;感覺4O完勝啊。3.5還是很好胡謅&#xff0c;也就…

[Algorithm][動態規劃][子序列問題][最長定差子序列][最長的斐波那契子序列的長度]詳細講解

目錄 1.最長定差子序列1.題目鏈接2.算法原理詳解3.代碼實現 2.最長的斐波那契子序列的長度1.題目鏈接2.算法原理詳解3.代碼實現 1.最長定差子序列 1.題目鏈接 最長定差子序列 2.算法原理詳解 思路&#xff1a; 確定狀態表示 -> dp[i]的含義 以i位置元素為結尾的所有子序列…

Python知識點3---條件判斷語句

提前說一點&#xff1a;如果你是專注于Python開發&#xff0c;那么本系列知識點只是帶你入個門再詳細的開發點就要去看其他資料了&#xff0c;而如果你和作者一樣只是操作其他技術的Python API那就足夠了。 Python的條件判斷語句和其他的語言有些不一樣&#xff0c;它只有if語…

【從加載數據庫驅動包,理解java SPI】

SPI&#xff08;Service Provider Interface&#xff09; 從1.6引入&#xff0c;基于ClassLoader 來加載并發現服務的機制 對于msyql驅動 引入依賴 <dependency><groupId>mysql</groupId><artifactId>mysql-connector-java</artifactId><v…

11.2 選擇排序

目錄 11.2 選擇排序 11.2.1 算法特性 11.2 選擇排序 選擇排序&#xff08;selection sort&#xff09;的工作原理非常簡單&#xff1a;開啟一個循環&#xff0c;每輪從未排序區間選擇最小的元素&#xff0c;將其放到已排序區間的末尾。 設數組的長度為 &#x1d45b;…

華東師范大學研究團隊《Ecology Letters 》揭示植物如何改變其物候以響應全球變化

自工業革命以來&#xff0c;人類活動導致多種環境因子同時發生變化&#xff0c;包括氣候變暖、降水模式改變、氮沉降增加和大氣CO2升高。這些變化預計會影響植物生命周期事件的季節時序—植物物候&#xff08;Nature Reviews Earth & Environment | 傅伯杰院士團隊發文闡述…

[C][棧幀]詳細講解

目錄 1.棧幀1.進程地址空間2.棧幀說明 2.認識相關寄存器3.認識相關匯編命令4.過程理解5.棧幀總結6.補充 1.棧幀 1.進程地址空間 .進程地址空間 2.棧幀說明 調用函數&#xff0c;形成棧幀函數返回&#xff0c;釋放棧幀局部變量是存放在棧區上的棧區內存的使用習慣是&#xff…