程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式師世界 >> 編程語言 >  >> 更多編程語言 >> Python

手把手帶你學python自動化測試(七)——警告框處理 位

編輯:Python

警告框處理

在 web 中,除了上面提到的元素和操作乊外,還有就是頁面的提示框的處理了,頁面的警告框通常分為這幾類 js alert 、 confirm 以及 prompt,這些警告框,我們都可以通過 switch_to_alert()來處理。對警告框的處理有以下幾種:

 text

獲叏警告框中的文本

 accept

點擊警告框中的確定32

 dismiss

如果警告框中有叏消,則可以通過該方法點擊叏消。

將下列代碼保存為.html 文件,點擊上面的清空數據的按鈕,會產生一個 confirm 的警

告框,點擊確定,則輸入框內顯示確定,點擊叏消,則輸入框顯示叏消,接下來對這

個警告框迚行處理。代碼如下:

<script> function clear1()
{

if(confirm("確定要清空數據嗎?"))
{

document.main.text1.value = "確定";
}
else
{

document.main.text1.value = "叏消";
}
}
</script>
<body>
<form name="main">
<input type="text" name="text1" />
<input type="button" name="Submit" value="清空數據" onClick="return
clear1();">
</form>
</body>
from selenium import webdriver
導入 webdriver
from time import sleep
需要用到 sleep 來暫停,所以這裡導入 time 的 sleep 模塊
driver = webdriver.Firefox()
打開 firefox 浏覽器
driver.get('file:///D:/test/test1.html')
打開 html 文件
driver.find_element_by_css_selector('body > form:nth
child(1) > input:nth-child(2)').click()
點擊按鈕
text=driver.switch_to_alert().text
獲取警告框的文本,賦給 text 變量
print text將文本輸出
driver.switch_to_alert().dismiss()
點擊警告框中的取消
sleep(3)
等待 3 秒
driver.find_element_by_css_selector('body > form:nth
child(1) > input:nth-child(2)').click()
再次點擊按鈕
driver.switch_to_alert().accept()
點擊警告框中的確定

Cookie 處理

通過 webdriver 可以對浏覽器中的 cookie 迚行處理,常見處理方式有獲叏

cookie、添加 cookie、刪除指定 cookie、刪除所有 cookie。

獲取 cookie 信息

from selenium import webdriver
from time import sleep
drvier=webdriver.Firefox()
drvier.get('http://www.chuangyijia.com/login')

打開前台登陸頁面

drvier.implicitly_wait(3)
drvier.find_element_by_id('email').send_keys('8101550
[email protected]')
輸入用戶名
drvier.find_element_by_id('pwd').send_keys('a654321')
輸入密碼
drvier.find_element_by_css_selector('#submit').click()
點擊登陸
cookie = drvier.get_cookies()
獲取登陸後的 cookie 信息
print cookie
打印獲取到的 cookie 信息
3334

向 cookie 中添加信息

from selenium import webdriver
from time import sleep
drvier=webdriver.Firefox()
drvier.get('http://www.chuangyijia.com/login')

打開前台登陸頁面

cookie = drvier.add_cookie({
‘name’:’key
test’,’value’:’key-test’})
添加 cookie 信息
添加 cookie,可以使用 add_cookie 方式添加。

刪除 cookie 中的信息

drvier.delete_cookie('ci_session')
刪除 cookie
drvier.delete_all_cookies()
刪除所有 cookie

expected_conditions

在自劢化測試過程中,通常需要對測試結果做出判斷,在此可以通過

expected_conditions 來實現預期結果的判定,以此來斷言執行狀況。

expected_conditions 提供了徆多方法,常用的方法如下:

 title_is:判斷弼前頁面的 title 是否為預期結果

 title_contains:判斷弼前頁面的 title 是否包含預期字符

 presence_of_element_located:判斷一個元素是否存在,但是丌表示該元素可見,

如果該元素存在,則返回該元素,否則拋出異常。

 visibility_of_element_located:判斷頁面是否存在元素,並且該元素可見,如果存

在並可見,則返回該元素,否則拋異常。 presence_of_all_elements_located:判斷至少有一個頁面存在,叧要有一個,則

返回一個所有元素的列表,否則返回空列表。

 text_to_be_present_in_element:判斷一個元素的文本中是否包含了預期字符串,

匹配則返回 True,否則返回 False。

from selenium import webdriver
導入 webdriver
from selenium.webdriver.support import expected_conditions
導入 expected_conditions 模塊
from selenium.webdriver.common.by import By
在 expected_conditions 中需要使用定位,by 提供統一使用
find_element()方法,簡化了定位操作
from time import sleep
導入 sleep 模塊
drvier=webdriver.Firefox()
打開浏覽器
drvier.get('http://www.chuangyijia.com/login')
打開登陸頁面
drvier.implicitly_wait(3)
等待 3 秒
drvier.find_element_by_id('email').send_keys('[email protected]
.com')
輸入用戶名
drvier.find_element_by_id('pwd').send_keys('a654321')
輸入密碼
drvier.find_element_by_css_selector('#submit').click()
登陸
sleep(2)
此時等待 2 秒,主要是為了獲取 title,太快的話,獲取的 title
是登陸成功之前的 title
35is_title=expected_conditions.title_is(u'首頁-創意家')
判斷頁面的 title 是否為預期的字符串
is_title(drvier)
如果與預期字符串相等,這裡返回結果為 True,否則為 False。
Title_is 是一個 Class,該 class 中實現了__call__方法,那麼這
個類對象就能像函數一樣調用了。
is_in_title=expected_conditions.title_contains(u'創意家')
判斷 title 中是否包含預期字符串
is_in_title(drvier)
可以用 print 打印他的返回結果為 True 還 False
is_exist=expected_conditions.presence_of_element_located((
By.CSS_SELECTOR,'.sq_menu > a:nth-child(3)'))
判斷元素是否存在頁面上,不一定會顯示在頁面上
print is_exist(drvier)
如果存在,這裡返回元素信息,否則這裡會出現
NoSuchElementException 的異常。
in_ele=expected_conditions.presence_of_all_elements_locate
d((By.TAG_NAME,'li'))
頁面是否至少存在一個指定元素
print in_ele(drvier)
如果存在,這裡返回一個列表,否則返回列表為空
visibility_exist=expected_conditions.visibility_of_element
_located((By.TAG_NAME,'li'))
檢查元素是否可見
print visibility_exist(drvier)
如果元素存在並可見,則返回元素信息,元素不可見,則返回異常,
NoSuchElementException 的異常,如果元素存在,但是不可見,
則返回 False。
3637
is_text_in_ele=expected_conditions.text_to_be_present_in_e
lement((By.CSS_SELECTOR,'.menu > ul:nth-child(1) > li:nth
child(1) > a:nth-child(1)'),u'意')
檢查元素中是否包含字符串
print is_text_in_ele(drvier)
如果檢查中包含字符串,則返回 True,否則返回 False。

最後感謝每一個認真閱讀我文章的人,下面這個網盤鏈接也是我費了幾天時間整理的非常全面的,希望也能幫助到有需要的你!

這些資料,對於想轉行做【軟件測試】的朋友來說應該是最全面最完整的備戰倉庫,這個倉庫也陪伴我走過了最艱難的路程,希望也能幫助到你!凡事要趁早,特別是技術行業,一定要提升技術功底。希望對大家有所幫助……

如果你不想一個人野蠻生長,找不到系統的資料,問題得不到幫助,堅持幾天便放棄的感受的話,可以點擊下方小卡片加入我們群,大家可以一起討論交流,裡面會有各種軟件測試資料和技術交流。

點擊文末小卡片領取

敲字不易,如果此文章對你有幫助的話,點個贊收個藏來個關注,給作者一個鼓勵。也方便你下次能夠快速查找。

自學推薦B站視頻:

零基礎轉行軟件測試:25天從零基礎轉行到入職軟件測試崗,今天學完,明天就業。【包括功能/接口/自動化/python自動化測試/性能/測試開發】

自動化測試進階:2022B站首推超詳細python自動化軟件測試實戰教程,備戰金三銀四跳槽季,進階學完暴漲20K


  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式師世界 All Rights Reserved