selenium自動化在進行瀏覽器驅動的同時,會有一些相關的模擬行為的操作,例如窗口的操作,鼠標的操作,鍵盤的操作,javascript相關操作!
窗口操作
首先我們在操作瀏覽器的時候,會進行一下窗口的放大與縮小,關閉瀏覽器,退出瀏覽器,后退瀏覽器等相關操作!
driver = webdriver.Chrome() # 打開谷歌瀏覽器driver=webdriver.Firefox() # 打開火狐瀏覽器driver.get() # 打開某網頁,括號里放url地址driver.refresh() #刷新頁面driver.back() # 后退上個頁面driver.forward() # 前進下個頁面driver.close() # 關閉當前窗口driver.quit() # 退出瀏覽器driver.save_screenshot('./01.png') # 截圖當前頁面()中存放保存圖片的路徑driver.current_url # 獲取當前頁面urldriver.title # 獲取當前頁面標題hands = driver.window_handles # 獲取當前窗口列表,獲取額是個list的類型driver.switch_to.window(hands[0]) #切換到第一個窗口(hands[0])下標切換driver.switch_to.window(hands[-1]) #切換最新窗口alert = driver.switch_to_alert() # 獲取頁面提示彈窗(確定,取消彈窗)alert.text # 獲取警告對話框內容alert.accept() # 確認彈窗alert.dismiss() #取消彈窗# 當頁面存在frame或iframe標簽時,會存在頁面元素定位不到,此時需要切換famedriver.switch_to.frame('') # 切換frame標簽()中放frame的id,class,name都可以driver.implicitly_wait(X) # 隱式等待,頁面全部加載完成后等待X秒from selenium.webdriver.support.wait import WebDriverWait # 導入顯示等待包WebDriverWait(self.driver,5,0.5).until(lambda x:x.find_element_by_xpath(""),"返回超時錯誤信息") # 顯示等待driver.set_page_load_timeout(10) # 全局的頁面加載時間
鼠標操作
from selenium.webdriver.common.action_chains import ActionChains 導包
雙擊:double_click
拖拽: drag_and_drop
點擊左鍵不松開:click_and_hold
松開左鍵: release
移到某個元素:move_to_element
以上鼠標操作模擬基本夠我們在項目中使用,注意ActionChains包最后必須加上perform()方法才可展示出效果,具體實例:
move1 = driver.find_element_by_xpath('//*[@id="dragger"]') # 定義一個元素
move2 = driver.find_element_by_xpath('/html/body/div[2]') # 定義第二個元素ActionChains(driver).move_to_element(move1).perform() # 移動鼠標至元素move1ActionChains(driver).drag_and_drop(move1,move2).perform() # 將鼠標move1元素,拖拽至move2的元素上
鍵盤操作:
使用鍵盤操作時,需要借助send_keys()來模擬操作。
Key.CONTROL就是我們鍵盤上的Ctrl鍵
from selenium.webdriver.common.keys import Keys 導入包
send_keys(Key.CONTROL,'a') #全選(Ctrl+A)
send_keys(Key.CONTROL,'c') #復制(Ctrl+C)
send_keys(Key.CONTROL,'x') #剪切(Ctrl+X)
send_keys(Key.CONTROL,'v') #粘貼(Ctrl+V)
常用的非組合鍵:
回車鍵 Keys.ENTER
刪除鍵 Keys.BACK_SPACE
空格鍵 Keys.SPACE
制表鍵 Keys.TAB
回退鍵 Keys.ESCAPE
刷新鍵 Keys.F5
以下實例:
from selenium.webdriver.common.keys import Keys
from selenium import webdriver
driver = webdriver.Chrome()#打開Chrome瀏覽器
driver.get('https://www.baidu.com/')#打開百度
driver.find_element_by_xpath('//input[@id="kw"]').send_keys('零基礎Python自動化',Keys.ENTER) #輸入文本並回車操作
javascript操作:
開發者工具打開控制台consle編寫js語言,window就是一個對象:表示瀏覽器窗口
1,打開新的瀏覽器窗口:window.open(url)
2,瀏覽器內部寬度window.innerWidth
3,瀏覽器內部高度window.innerHeight
4,瀏覽器整體寬度window.outerWidth
5,瀏覽器整體高度window.outerHeight
6,瀏覽器滾動條:window.scrollTo(0,1000) ! window.By(0,1000)
7,非瀏覽器類型的滾動條:document.getElementsById(id)[0].scrollTop=‘1000'
document:表示當前頁面對象
1.獲取當前標題:document.title
2.輸入文本值:document.getElementsById(id)[0].value=" "
3.操作標簽document.getElementsById(id)[0].click()
4.更改屬性:
document.getElementById('vip').style.visibility='visible'

我們如何使用python去操作js文本呢,driver.execute_script() ,括號里面輸入js文本
driver.execute_script('window.open("https://www.baidu.com/") ')
當我們項目中的時候難免會遇到當前頁面過長,看不到下面內容的時候 我們需要下滑窗口滾動條到指定位置,方便我們進行查看定位:
element = driver.find_element_by_xpath('//*[@id="dragger"]') # 定義一個元素
driver.execute_script('arguments[0].scrollIntoView();',element) # 下滑到指定元素
selenium之web自動化模擬操作(窗口,鼠標,鍵盤,js)
selenium自動化在進行瀏覽器驅動的同時,會有一些相關的模擬行為的操作,例如窗口的操作,鼠標的操作,鍵盤的操作,javascript相關操作!
窗口操作
首先我們在操作瀏覽器的時候,會進行一下窗口的放大與縮小,關閉瀏覽器,退出瀏覽器,后退瀏覽器等相關操作!
driver = webdriver.Chrome() # 打開谷歌瀏覽器driver=webdriver.Firefox() # 打開火狐瀏覽器driver.get() # 打開某網頁,括號里放url地址driver.refresh() #刷新頁面driver.back() # 后退上個頁面driver.forward() # 前進下個頁面driver.close() # 關閉當前窗口driver.quit() # 退出瀏覽器driver.save_screenshot('./01.png') # 截圖當前頁面()中存放保存圖片的路徑driver.current_url # 獲取當前頁面urldriver.title # 獲取當前頁面標題hands = driver.window_handles # 獲取當前窗口列表,獲取額是個list的類型driver.switch_to.window(hands[0]) #切換到第一個窗口(hands[0])下標切換driver.switch_to.window(hands[-1]) #切換最新窗口alert = driver.switch_to_alert() # 獲取頁面提示彈窗(確定,取消彈窗)alert.text # 獲取警告對話框內容alert.accept() # 確認彈窗alert.dismiss() #取消彈窗# 當頁面存在frame或iframe標簽時,會存在頁面元素定位不到,此時需要切換famedriver.switch_to.frame('') # 切換frame標簽()中放frame的id,class,name都可以driver.implicitly_wait(X) # 隱式等待,頁面全部加載完成后等待X秒from selenium.webdriver.support.wait import WebDriverWait # 導入顯示等待包WebDriverWait(self.driver,5,0.5).until(lambda x:x.find_element_by_xpath(""),"返回超時錯誤信息") # 顯示等待driver.set_page_load_timeout(10) # 全局的頁面加載時間
鼠標操作
from selenium.webdriver.common.action_chains import ActionChains 導包雙擊:double_click拖拽: drag_and_drop點擊左鍵不松開:click_and_hold松開左鍵: release移到某個元素:move_to_element
以上鼠標操作模擬基本夠我們在項目中使用,注意ActionChains包最后必須加上perform()方法才可展示出效果,具體實例:
move1 = driver.find_element_by_xpath('//*[@id="dragger"]') # 定義一個元素move2 = driver.find_element_by_xpath('/html/body/div[2]') # 定義第二個元素ActionChains(driver).move_to_element(move1).perform() # 移動鼠標至元素move1ActionChains(driver).drag_and_drop(move1,move2).perform() # 將鼠標move1元素,拖拽至move2的元素上
鍵盤操作:
使用鍵盤操作時,需要借助send_keys()來模擬操作。
Key.CONTROL就是我們鍵盤上的Ctrl鍵
from selenium.webdriver.common.keys import Keys 導入包send_keys(Key.CONTROL,'a') #全選(Ctrl+A)send_keys(Key.CONTROL,'c') #復制(Ctrl+C)send_keys(Key.CONTROL,'x') #剪切(Ctrl+X)send_keys(Key.CONTROL,'v') #粘貼(Ctrl+V)
常用的非組合鍵:
回車鍵 Keys.ENTER
刪除鍵 Keys.BACK_SPACE
空格鍵 Keys.SPACE
制表鍵 Keys.TAB
回退鍵 Keys.ESCAPE
刷新鍵 Keys.F5
以下實例:
from selenium.webdriver.common.keys import Keysfrom selenium import webdriverdriver = webdriver.Chrome()#打開Chrome瀏覽器driver.get('https://www.baidu.com/')#打開百度driver.find_element_by_xpath('//input[@id="kw"]').send_keys('零基礎Python自動化',Keys.ENTER) #輸入文本並回車操作
javascript操作:
開發者工具打開控制台consle編寫js語言,window就是一個對象:表示瀏覽器窗口
1,打開新的瀏覽器窗口:window.open(url)
2,瀏覽器內部寬度window.innerWidth
3,瀏覽器內部高度window.innerHeight
4,瀏覽器整體寬度window.outerWidth
5,瀏覽器整體高度window.outerHeight
6,瀏覽器滾動條:window.scrollTo(0,1000) ! window.By(0,1000)
7,非瀏覽器類型的滾動條:document.getElementsById(id)[0].scrollTop=‘1000'
document:表示當前頁面對象
1.獲取當前標題:document.title
2.輸入文本值:document.getElementsById(id)[0].value=" "
3.操作標簽document.getElementsById(id)[0].click()
4.更改屬性:
document.getElementById('vip').style.visibility='visible'

我們如何使用python去操作js文本呢,driver.execute_script() ,括號里面輸入js文本
driver.execute_script('window.open("https://www.baidu.com/") ')
當我們項目中的時候難免會遇到當前頁面過長,看不到下面內容的時候 我們需要下滑窗口滾動條到指定位置,方便我們進行查看定位:
element = driver.find_element_by_xpath('//*[@id="dragger"]') # 定義一個元素driver.execute_script('arguments[0].scrollIntoView();',element) # 下滑到指定元素
