ActionChains類與輸入事件
使用 click() 可以模拟滑鼠的左鍵點選事件,現在的 web 頁面中有很多其他的滑鼠互動方式,比如滑鼠右擊,輕按兩下,懸停,滑鼠拖放等功能。在 WebDriver 中,将這些關于滑鼠操作的方法封裝在 ActionChains 類
1、from selenium.webdriver.common.action_chains import ActionChains
2、ActionChains(driver):用于生成模拟使用者行為
3、perform():執行存儲行為
滑鼠事件:
表達式 | 說明 |
context_click | 右擊事件 |
double_click | 輕按兩下事件 |
drag_and_drop | 拖動(拖放) |
move_to_element() | 滑鼠停在一個元素上(滑鼠懸停) |
click_and_hold | 按下滑鼠左鍵在一個元素上 |
舉例:
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
driver=webdriver.Firefox()
driver.get("https://www.baidu.com")
driver.implicitly_wait(20) #等待20秒
mouse=driver.find_element_by_link_text("設定") #定位 設定 按鈕
ActionChains(driver).move_to_element(mouse).perform() #滑鼠懸停在 設定 按鈕
driver.find_element_by_link_text("搜尋設定").click() #點選設定按鈕下的 搜尋連結
driver.find_element_by_id("nr") #定位下拉框
driver.find_elements_by_tag_name('option')[1].click() #擷取下拉框第二個選項
driver.find_element_by_xpath("//option[@value='50']").click() #擷取下拉框值包含50的選項
driver.find_element_by_css_selector("[value='20']").click()
driver.find_element_by_css_selector("html body div#wrapper div.bdlayer.pfpanel div.pfpanel-bd div.pftab div.pftab_bd div#general.item.cur form div.search-setting table#gxsz tbody tr td#se-setting-3 select#nr option").click()
driver.find_element_by_css_selector("[value='20']").click() #擷取下拉框值得幾種寫法
鍵盤事件:send_keys()
from selenium.webdriver.common.keys import Keys
Key 類提供了鍵盤上幾乎所有的按鍵方法。通過send_key() 方法不僅可以用來模拟鍵盤輸入,還可以用它來模拟鍵盤上的按鍵。包括組合鍵,比如 ctrl+a 等
表達式 | 說明 |
send_keys(Keys.BACK_SPACE) | 倒退鍵 |
send_keys(Keys.CONTRL,'a') | 全選 |
send_keys(Keys.CONTRL,'V') | 粘貼 |
send_keys(Keys.CONTRL,'C') | 複制 |
send_keys(Keys.CONTRL,'X') | 剪切 |
send_keys(Keys.ENTER) | 回車 |
舉例:
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from selenium.webdriver.common.keys import Keys
d=webdriver.Firefox()
d.get("https://www.baidu.com")
mouse=d.find_element_by_link_text("設定")
ActionChains(d).move_to_element(mouse).perform() #滑鼠懸浮在 設定上
d.find_element_by_link_text("搜尋設定").click()
dd=d.find_element_by_class_name("prefpanelgo") #儲存設定按鈕
dd.send_keys(Keys.ENTER) #滑鼠回車