iT邦幫忙

2023 iThome 鐵人賽

DAY 15
0
自我挑戰組

待業不頹廢系列 第 15

Day 15 . 欸 今天要幹嘛 - ActionChains 的使用

  • 分享至 

  • xImage
  •  

行前提要

昨天在程式碼中默默的出現 ActionChains 的使用。
原先想要使用 element.send_keys("Selenium Python"),輸入文本並觸發事件,想要輸入"Selenium Python",並執行鍵盤輸入操作,將字符串 "Selenium Python" 輸入到該元素中。
已開始以為又是時間太快,但我下時間後,還是沒有效果出來。
所以嘗試找尋其他方式來達成同樣效果。
💥 特別補!後來發現好像是時間下錯位置 time.sleep(3) ,下面就示範原來的以及同步介紹 ActionChains

原來的成功了

from selenium import webdriver
from selenium.webdriver.common.by import By
import time
from selenium.webdriver.common.keys import Keys
# 初始化Chrome WebDriver
driver = webdriver.Chrome()

#打開網頁:使用get方法打開你要爬取的網頁。
driver.get("https://www.google.com/")

#進行操作:
#定位搜尋框
element = driver.find_element(By.NAME, "q")

#傳入字串
element.send_keys("Selenium Python")
time.sleep(3)
element.send_keys(Keys.RETURN)  
# element.send_keys("Selenium Python")
time.sleep(3)

#清理和關閉:在完成操作後,確保關閉Chrome瀏覽器,以釋放資源。
driver.quit()

其中 模擬鍵盤輸入的 send_keys

from selenium.webdriver.common.keys import Keys

ActionChains

一種在網頁自動化測試中用於執行一系列互動動作的工具。
這些動作可以包括點擊、滑鼠懸停、拖曳、鍵盤操作、雙擊、滾動等等。
ActionChains 允許你模擬用戶在瀏覽網頁時的各種互動行為,以便測試網站功能、自動化瀏覽器任務,或執行其他需要模擬用戶操作的任務。
也可以完成多種動作,如下(也就是我改寫的成果,還有新增其他動作)

import time
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys

driver = webdriver.Chrome()

driver.get("https://www.google.com/")

#進行操作:#定位搜尋框
element = driver.find_element(By.CLASS_NAME, "SDkEP")

# 傳入字串
action = ActionChains(driver)
action.send_keys_to_element(element, "Selenium Python")
# action.send_keys("Selenium Python")(上下兩行都可以)

action.send_keys(Keys.RETURN) 

action.perform()
time.sleep(2)
driver.quit()

一些常見的 ActionChains 動作示例:

  • context_click(element):模擬右鍵單擊指定元素,通常用於觸發上下文菜單。

  • double_click(element):模擬雙擊指定元素,就像用戶兩次單擊一樣。

  • drag_and_drop(source, target):模擬拖拽操作,將源元素拖拽到目標元素上。

  • key_down(key) 和 key_up(key):模擬按下和釋放指定的鍵,可以用於執行特殊的鍵盤操作。

  • move_by_offset(x, y):將鼠標移到當前位置的相對偏移位置 (x, y)。

  • pause(seconds):暫停一段時間,通常用於等待元素加載或動畫完成。

  • release():釋放滑鼠左鍵,通常用於模擬拖拽操作的放置動作。

  • send_keys(*keys):模擬按下和釋放指定的一系列鍵,可用於執行複雜的鍵盤操作。

  • move_to_element(element):將鼠標移到指定元素的中心點。

  • click_and_hold(element):模擬按住鼠標左鍵,通常與 move_to_element 一起使用,實現拖拽操作。

好多動作再來玩看看,又是廉價(連假)期間產出的文,好水


上一篇
Day 14 . 欸 今天要幹嘛 - 繼續做 寫出python 動態爬蟲
下一篇
Day 16 . 欸 今天要幹嘛 - 追朔之前的問題
系列文
待業不頹廢30
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言