alert


在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()

 

 
        

 

 
       


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM