1. 程式人生 > 其它 >Selenium - javascript進行滾動條、alert等操作

Selenium - javascript進行滾動條、alert等操作

前言

頁面上的資料過多的時候,要定位頁面底部的元素,需要下拉滾動條才可以操作。

直接定位,會提示元素不存在。需要操作頁面上的滾動條,使被操作的元素出現在頁面上,才能定位到,比如一些翻頁的操作。

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)