在web自動化中,會遇到想要定位的內容,由於電腦分辨率的問題導致,需要定位的元素可能沒有在頁面上展示出來,這個時候我們應該怎么做呢?正常情況下,肯定是點擊滾動條,找到想要的元素,然后進行操作。問題來了,selenium有沒有辦法操作滾動呢?selenium目前沒有好的辦法進行操作滑動條,但是前面介紹的JS有這個功能哈
滾動條
滾動條:滾動條是在我們使用軟件無法顯示整個界面的時候,右側的一個可以滾動的用於顯示剩下界面的條
知道了滾動條是什么,那么我們如何通過JS進行操作呢?
JS操作滾動條
JS操作滾動條有幾種
1、滾動條到頂部
# JS滾動條到頂部 js="var q=document.getElementById('id').scrollTop=0"
2、滾動條在底部,scrollTop表示滑動條的位置
# 滾動條到底部, js="var q=document.documentElement.scrollTop=10000"
3、操作橫向滾動條
# 操作橫向滾動條 js = “window.scrollTo(100,400)“
4、通過元素進行滾動
通過觀察會發現上面的滾動條都是滾動到固定位置,那么我們的元素在中間,我們又不清楚滾動條具體停放在哪里?我們可以通過JS進行找到這個元素然后將滾動條操作到可見元素的位置
# 滾動到元素可見位置 js = "arguments[0].scrollIntoView()" # 元素位置 element = driver.find_element_by_id('xxxx') # 滾動可見位置 driver.execute_script(js,element)
小試牛刀
這里安靜就拿博客園來舉例子,通過元素進行滾動到可視區域
from selenium import webdriver import time driver = webdriver.Chrome() driver.get('https://www.cnblogs.com/qican/') # 找到想要滾動到的元素 element = driver.find_element_by_xpath('//*[contains(text(),"下一頁")]') # js操作腳本 js = "arguments[0].scrollIntoView()" driver.execute_script(js,element) time.sleep(2) element.click()
其實通過JS操作web頁面的內容還有很多,JS可以幫助我們解決一些selenium無法解決的問題,后續一點點的為大家補充JS工作中遇到的內容,大家也可以留言說說你在工作中通過JS都做哪些?