在Alert的類里面,涉及到的方法以及方法的作用主要匯總為如下:
text:獲取彈出框的文本信息
accept是接受Confirm彈出框
dismiss是拒絕接受Confirm彈出框
send_keys是在Prompt消息對話框里面輸入想要輸入的內容。
導入相關的庫
from selenium.webdriver.common.alert import Alert from selenium import webdriver import time as t
警告框
text:獲取彈出框的文本信息。
driver=webdriver.Chrome() driver.get('file:///D:/code/testdev/UI%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/%E5%BC%B9%E5%87%BA%E6%A1%86.html') t.sleep(3) driver.find_element_by_xpath('/html/body/div/input').click() t.sleep(3) # Alert類的方法 print(Alert(driver=driver).text) 獲取彈出框里的內容 #第二種調用方法 # print(driver.switch_to.alert.text) t.sleep(3) driver.quit()
確認框
accept是接受Confirm彈出框
dismiss是拒絕接受Confirm彈出框
driver=webdriver.Chrome() driver.get('file:///D:/code/testdev/UI%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/%E7%A1%AE%E8%AE%A4%E6%A1%86.html') t.sleep(3) driver.find_element_by_xpath('/html/body/center/input').click() driver.switch_to.alert.accept() 點擊同意按鍵 t.sleep(3) #刷新 driver.refresh() driver.find_element_by_xpath('/html/body/center/input').click() driver.switch_to.alert.dismiss() 點擊取消 t.sleep(3) driver.quit()
消息對話框
send_keys是在Prompt消息對話框里面輸入想要輸入的內容
driver=webdriver.Chrome() driver.get('file:///D:/code/testdev/UI%E8%87%AA%E5%8A%A8%E5%8C%96%E6%B5%8B%E8%AF%95/%E6%B6%88%E6%81%AF%E5%AF%B9%E8%AF%9D%E6%A1%86.html') t.sleep(3) driver.find_element_by_xpath('/html/body/center/input').click() driver.switch_to.alert.send_keys('陳立') driver.switch_to.alert.accept() t.sleep(3) driver.quit()
鼠標事件
鼠標的基本功能有懸浮、右鍵和雙擊
以百度為例,鼠標懸浮在設置,點擊搜索設置
具體代碼:
首先導入相關庫
from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains import time as t
driver=webdriver.Chrome() driver.maximize_window() driver.get('https://www.baidu.com/') t.sleep(3) #對ActionChains進行實例化 obj=ActionChains(driver=driver) settings=driver.find_element_by_xpath('//*[@id="s-usersetting-top"]')定位設置 obj.move_to_element(settings).perform()鼠標懸浮在設置的位置 t.sleep(3) #點擊搜索設置 driver.find_element_by_xpath('//*[@id="s-user-setting-menu"]/div/a[1]').click() t.sleep(3) #點擊保存設置 driver.find_element_by_xpath('//*[@id="se-setting-7"]/a[2]').click() t.sleep(3) print(driver.switch_to.alert.text) #點擊確定 driver.switch_to.alert.accept() t.sleep(3) driver.quit()
右鍵,
以百度網盤為例

代碼實現這種效果:
from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains import time as t driver=webdriver.Chrome() driver.maximize_window() driver.get('https://pan.baidu.com/') t.sleep(3) #短信快捷登錄 driver.find_element_by_id('TANGRAM__PSP_4__smsSwitchWrapper').click() #輸入手機號 driver.find_element_by_id('TANGRAM__PSP_4__smsPhone').send_keys('15929643373') t.sleep(3) #發送驗證碼 driver.find_element_by_id('TANGRAM__PSP_4__smsTimer').click() t.sleep(45) #點擊登錄 driver.find_element_by_id('TANGRAM__PSP_4__smsSubmit').click() t.sleep(15) obj=ActionChains(driver=driver) #獲取元素屬性 chenli=driver.find_element_by_xpath('/html/body/div[1]/div[3]/div[2]/div[3]/div/div/dd[3]/div[2]/div[1]/a') t.sleep(3) obj.context_click(chenli).perform() 鼠標右擊 t.sleep(3) driver.quit()
雙擊
在百度里雙擊百度一下,具體代碼
from selenium import webdriver from selenium.webdriver.common.action_chains import ActionChains import time as t driver=webdriver.Chrome() driver.maximize_window() driver.get('https://www.baidu.com/') t.sleep(3) obj=ActionChains(driver=driver) driver.find_element_by_id('kw').send_keys('chenli') t.sleep(3) so=driver.find_element_by_id('su') #雙擊 obj.double_click(so).perform() t.sleep(3) driver.quit()
鍵盤事件
首先導入Key是庫
from selenium.webdriver.common.keys import Keys
鍵盤我們常用的有:
Keys.BACK_SPACE:回退鍵(BackSpace)
Keys.TAB:制表鍵(Tab)
Keys.ENTER:回車鍵(Enter)
Keys.SHIFT:大小寫轉換鍵(Shift)
Keys.CONTROL:Control鍵(Ctrl)
Keys.ALT:ALT鍵(Alt)
Keys.ESCAPE:返回鍵(Esc)
Keys.SPACE:空格鍵(Space)
Keys.PAGE_UP:翻頁鍵上(Page Up)
Keys.PAGE_DOWN:翻頁鍵下(Page Down)
Keys.END:行尾鍵(End)
Keys.HOME:行首鍵(Home)
Keys.LEFT:方向鍵左(Left)
Keys.UP:方向鍵上(Up)
Keys.RIGHT:方向鍵右(Right)
Keys.DOWN:方向鍵下(Down)
Keys.INSERT:插入鍵(Insert)
DELETE:刪除鍵(Delete)
NUMPAD0 ~ NUMPAD9:數字鍵1-9
F1 ~ F12:F1 - F12鍵
(Keys.CONTROL, ‘a’):組合鍵Control+a,全選
(Keys.CONTROL, ‘c’):組合鍵Control+c,復制
(Keys.CONTROL, ‘x’):組合鍵Control+x,剪切
(Keys.CONTROL, ‘v’):組合鍵Control+v,粘貼
具體代碼實現為:
from selenium import webdriver from selenium.webdriver.common.keys import Keys import time as t '''回車''' driver=webdriver.Chrome() driver.maximize_window() driver.get('https://www.baidu.com/') so=driver.find_element_by_id('kw') t.sleep(3) so.send_keys('輸入法') t.sleep(3) so.send_keys(F5) t.sleep(5) so.send_keys('輸入法') t.sleep(5) so.send_keys(Keys.F12) so.send_keys(Keys.CONTROL,'A')#全選 t.sleep(3) so.send_keys(Keys.CONTROL,'C')#復制 t.sleep(3) so.send_keys(Keys.BACKSPACE)#刪除 t.sleep(3) so.send_keys(Keys.CONTROL,'V')#粘貼 so.send_keys(Keys.ENTER)#回車 t.sleep(3) driver.quit()
等待:
等待主要分為三類
1、固定等待,也就是使用sleep()方法
2、隱式等待,使用到的方法是implicitly_wait的方法,可以把它理解為設置最長等待時間
3、顯式等待,主要指的是程序每隔一段時間執行自定義的程序判斷條件,如果判斷成立,程序就會繼續執行,
那么如果判斷失敗,就會報TimeOutExpection的異常信息。
生活實際中,經常遇到因為網絡原因資源加載比較慢,這時我們就需要在運行過程中等待一定時間。
driver=webdriver.Chrome() driver.maximize_window() driver.get('https://www.baidu.com/') driver.implicitly_wait(10) 最多等待10秒 wait=WebDriverWait(driver=driver,timeout=10).until(method=es.element_to_be_clickable((By.ID,'kw'))) 等待加載完成通過ID 定位到搜索輸入框 wait.send_keys('等') t.sleep(3) 固定等待3秒 driver.quit()
元素可見時操作
element_to_be_clickable是元素可見的時候進行操
作,當然相反的是元素不可見那么久無法操作,這個主要指的是資源加載出來進行具體的操作,
具體以百度里的“關於百度”為例,具體代碼為:
driver=webdriver.Chrome() driver.maximize_window() driver.get('https://www.baidu.com/') driver.implicitly_wait(10) aboutbaidu=WebDriverWait(driver=driver,timeout=10).until( es.element_to_be_clickable((By.LINK_TEXT,'關於百度'))) t.sleep(3) aboutbaidu.click() 判斷存在 並點擊 driver.quit()
指定元素的文本位置
這個方法主要應用於錯誤文本信息的驗證,我們首先需要錯誤文本信息顯示出來才能夠進行斷言的
驗證,使用到的方法為:text_to_be_present_in_element,下面我們主要是以sina email為案例來演示
下這部分的具體應用,具體代碼如下
driver=webdriver.Chrome() driver.maximize_window() driver.get('https://mail.sina.com.cn/') driver.implicitly_wait(10) #點擊登錄 driver.find_element_by_link_text('登錄').click() divText=WebDriverWait(driver=driver,timeout=10).until( method=es.element_to_be_clickable( (By.XPATH,'/html/body/div[3]/div/div[2]/div/div/div[4]/div[1]/div[1]/div[1]/span[1]'))) t.sleep(5) assert divText.text=='請輸入郵箱名' t.sleep(5) driver.quit()