Selenium - javascript進行滾動條、alert等操作
阿新 • • 發佈:2022-03-19
前言
頁面上的資料過多的時候,要定位頁面底部的元素,需要下拉滾動條才可以操作。
直接定位,會提示元素不存在。需要操作頁面上的滾動條,使被操作的元素出現在頁面上,才能定位到,比如一些翻頁的操作。
Selenium 中沒有具體的方法來定位滾動條,需要藉助 javascrit 進行對滾動條操作。
Selenium 中提供了一個操作 javascript 的方法,execute_script 可以直接執行 javascript。
JavaScript 簡介
JavaScript 是網際網路上最流行的指令碼語言,這門語言可用於 HTML 和 web,
更可廣泛用於伺服器、PC、膝上型電腦、平板電腦和智慧手機等裝置。
- JavaScript 是指令碼語言
- JavaScript 是一種輕量級的程式語言。
- JavaScript 是可插入 HTML 頁面的程式設計程式碼。
- JavaScript 插入 HTML 頁面後,可由所有的現代瀏覽器執行。
具體去菜鳥教程看一下基礎的操作即可,後續需要再去學。
https://www.runoob.com/js/js-intro.html
一、js 處理 alert 彈窗
控制檯除錯輸入:alert(“tester”)
按回車,頁面會出現一個彈窗,想這種彈窗怎麼處理呢
alert.accept() 方法處理即可。
driver.switch_to.alert.accept()
使用豆瓣電影來演示,具體程式碼:
from selenium import webdriver
from time import sleep
driver = webdriver.Chrome()
driver.get('https://movie.douban.com/')
driver.maximize_window() # 視窗最大化
# alert 彈窗
driver.execute_script("alert('tester')")
sleep(2)
# 關閉 alert 彈窗
driver.switch_to.alert.accept()
二、獲取頁面 title
在控制檯輸入:document.title
獲取頁面title :招生錄入系統
獲取豆瓣電影首頁 title
from selenium import webdriver
from time import sleep
driver = webdriver.Chrome()
driver.get('https://movie.douban.com/')
driver.maximize_window()
# 獲取 title
sleep(2)
js = 'return document.title'
title = driver.execute_script(js)
print(title) # 豆瓣電影
三、處理滾動條
方法1.
使用 scrollTo()
方法
滾動到底部
js = "window.scrollTo(0,document.body.scrollHeight)"
driver.execute_script(js)
滾動到頂部
js = "window.scrollTo(0,0)"
driver.execute_script(js)
把豆瓣電影首頁滾動條滾動到底部。
程式碼實現:
from selenium import webdriver
from time import sleep
driver = webdriver.Chrome()
driver.get('https://movie.douban.com/')
driver.maximize_window()
sleep(2)
# 滾動到底部
js = "window.scrollTo(0,document.body.scrollHeight)"
driver.execute_script(js)
方法2:
js = "var q=document.getElementById('id').scrollTop=10000"
- id 為元素 id
driver.execute_script(js)
使用上面的方法處理不了下面這個下拉框,換一種方式。
這個下拉框有個 id
實現程式碼:
from time import sleep # 匯入時間模組
from selenium import webdriver # 從 selenium 匯入 webdriver 驅動
driver = webdriver.Chrome() # 驅動谷歌瀏覽器
driver.get('http://120.25.209.187:8080/recruit.students/login/view') # 開啟網頁
driver.maximize_window() # 瀏覽器最大化
driver.find_element_by_id('txtUserName').send_keys("admin") # 找到登入賬號輸入框,輸入 admin
sleep(3) # 休眠 3 s
driver.find_element_by_id('txtPassword').send_keys("test123") # 找到登入密碼輸入框,輸入 test123
sleep(3)
driver.find_element_by_xpath("//a[text()='登入']").click()
# 滾動到底部
sleep(5)
js = "var q=document.getElementById('rightContent').scrollTop=10000"
driver.execute_script(js)
# 滾動到頂部
sleep(3)
js = "var q=document.getElementById('rightContent').scrollTop=0"
driver.execute_script(js)