日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python + selenium + Js 处理轮动条

發布時間:2023/12/20 python 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python + selenium + Js 处理轮动条 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

selenium并不是萬能的,有時候頁面上操作無法實現的,這時候就需要借助JS來完成了。

常見場景:

當頁面上的元素超過一屏后,想操作屏幕下方的元素,是不能直接定位到,會報元素不可見的。

這時候需要借助滾動條來拖動屏幕,使被操作的元素顯示在當前的屏幕上。

滾動條是無法直接用定位工具來定位的。selenium里面也沒有直接的方法去控制滾動條,

這時候只能借助J了,還好selenium提供了一個操作js的方法:

execute_script(),可以直接執行js的腳本。

一、JavaScript簡介

1.JavaScript是世界上最流行的腳本語言,因為你在電腦、手機、平板上瀏覽的所有的網頁,

以及無數基于HTML5的手機App,交互邏輯都是由JavaScript驅動的。簡單地說,

JavaScript是一種運行在瀏覽器中的解釋型的編程語言。

那么問題來了,為什么我們要學JavaScript?
2.有些特殊的操作selenium2+python無法直接完成的,JS剛好是這方面的強項,所以算是一個很

好的補充。對js不太熟悉的,可以網上找下教程,簡單了解些即可。

http://www.runoob.com/js/js-tutorial.html

?

二、控制滾動條高度

1.滾動條回到頂部:

js="var q=document.getElementById(‘id‘).scrollTop=0"
driver.execute_script(js)
2.滾動條拉到底部

js="var q=document.documentElement.scrollTop=10000"
driver.execute_script(js)

3.這里可以修改scrollTop 的值,來定位右側滾動條的位置,0是最上面,10000是最底部。

版權所有,微信公眾號:軟件測試部落

三、橫向滾動條
1.有時候瀏覽器頁面需要左右滾動(一般屏幕最大化后,左右滾動的情況已經很少見了)。
2.通過左邊控制橫向和縱向滾動條scrollTo(x, y)js = "window.scrollTo(100,400);"

driver.execute_script(js)

3.第一個參數x是橫向距離,第二個參數y是縱向距離

?

四、Chrome瀏覽器

1.以上方法在Firefox上是可以的,但是用Chrome瀏覽器,發現不管用。
谷歌瀏覽器就是這么任性,不聽話,于是用以下方法解決谷歌瀏覽器滾動條的問題。

2.Chrome瀏覽器解決辦法:

js = "var q=document.body.scrollTop=0"
driver.execute_script(js)

?

五、元素聚焦
1.雖然用上面的方法可以解決拖動滾動條的位置問題,但是有時候無法確定我需要操作的元素

在什么位置,有可能每次打開的頁面不一樣,元素所在的位置也不一樣,怎么辦呢?

2.這個時候我們可以先讓頁面直接跳到元素出現的位置,然后就可以操作了。同樣需要借助JS去實現。
3.元素聚焦:

target = driver.find_element_by_xxxx()
driver.execute_script("arguments[0].scrollIntoView();", target)

?

六、獲取瀏覽器名稱:driver.name

1.為了解決不同瀏覽器操作方法不一樣的問題,可以寫個函數去做兼容。

2.先用driver.name獲取瀏覽器名稱,然后用if語句做個判斷

七、兼容性
1.兼容谷歌和firefox/IE

?
1

八、參考代碼如下:

# coding:utf-8 from selenium import webdriver driver = webdriver.Firefox() driver.get("https://www.baidu.com") print driver.name # 回到頂部 def scroll_top(): if driver.name == "chrome": js = "var q=document.body.scrollTop=0" else: js = "var q=document.documentElement.scrollTop=0" return driver.execute_script(js) # 拉到底部 def scroll_foot(): if driver.name == "chrome": #chrome 使用該方式 js = "var q=document.body.scrollTop=10000" else: #其他瀏覽器使用這種方式 js = "var q=document.documentElement.scrollTop=10000" return driver.execute_script(js) # 聚焦元素 target = driver.find_element_by_xxxx() driver.execute_script("arguments[0].scrollIntoView();", target)

?

?

JS功能還是很強大的,它還可以處理富文本、內嵌滾動條的問題。

?

轉載于:https://www.cnblogs.com/Skyyj/p/7275938.html

總結

以上是生活随笔為你收集整理的python + selenium + Js 处理轮动条的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。