Python+selenium是當前常用的自動化測試環境之一,在自動化測試框架中,常用的是POM模型,下面是對常用的頁面操作的總結:
1、輸入框:
?
from selenium import webdriver
#定位文本框
tk=driver.get_element_by_id("id")
#清空文本框
tk.clear()
#文本框中輸入內容
tk.send_keys("value")
2、下拉選擇框
a、通過select進行定位下拉框------通過代碼段定位
#導入Select方法
from selenium.webdriver.support.select import Select
#通過index進行選擇
Select(driver.find_element_by_id("id")).select_by_index("index")
#通過value進行選擇
Select(driver.find_element_by_id("id")).select_by_value("value")
#通過選項文字進行選擇
Select(driver.find_element_by_id("id")).select_by_visible_text("visible_text")
b、定位非
#先定位到下拉菜單
select1=driver.find_element_by_id("id")
#在對下拉菜單中的選項進行選擇
select1.find_element_by_id("id1").click()
3、取消下拉框選擇---------select提供了四種方法取消選擇
deselect_by_index(index)
deselect_by_value(value)
deselect_by_visible_text(visible_text)
deselect_all()
4、單選框
import webdriver
#找到單選框元素
radio_button=driver.find_element_by_id("id")
#選中單選框
radio_button.click()
#清空單選框
radio_button.clear()
#判斷某個單選框是否已被選擇,返回值為Boolean類型
radio_button.is_selected()
5、多選框-----復選框的type=checkbox,這里可以用xpath語法:.//*[@type='checkbox']
#find_elements是不能直接點擊的,它是復數的,所以只能先獲取到所有的checkbox對象,然后通過for循環去一個個點擊操作
drvier.find_elements_by_xpath(".//[@type='checkbox']")
/////復選框單選
# 找到多選框元素
checkbox = driver.find_element_by_id("id");
# 點擊復選框
checkbox.click()
#清除復選框
checkbox.clear()
#判斷復選框是否被選中
checkbox.is_selected()
#判斷復選框是否可用
checkbox.is_enabled();
/////復選框多選
checkboxs = driver.find_elements_by_xpath("http://*[@type='checkbox']")
for i in checkboxs:
i.click()
6、按鈕
# 找到按鈕元素
saveButton = driver.find_element_by_id("id")
# 點擊按鈕
4 saveButton.click()
# 判斷按鈕是否可用
6 saveButton.is_enabled ()
7、彈出對話框(參考鏈接:https://www.cnblogs.com/mengyu/p/6952774.html)
a、警告消息框(alert)
警告消息框提供了一個"確定"按鈕讓用戶關閉該消息框,并且該消息框是模式對話框,也就是說用戶必須先關閉該消息框然后才能繼續進行操作。
#獲取alert對話框的按鈕,點擊按鈕,彈出alert對話框
driver.find_element_by_xpath('xpath').click()
#獲取alert對話框
alert = driver.switch_to_alert()
#添加等待時間
time.sleep(2)
#獲取警告對話框的內容
print (alert.text) #打印警告對話框內容
#alert對話框屬于警告對話框,我們這里只能接受彈窗
alert.accept()
b、確認消息框(confirm)
確認消息框向用戶提示一個"是與否"問題,用戶可以根據選擇"確定"按鈕和"取消"按鈕。
#獲取confirm對話框的按鈕,點擊按鈕,彈出confirm對話框
driver.find_element_by_xpath('xpath').click()
#獲取confirm對話框
dialog_box = driver.switch_to_alert()
#添加等待時間
time.sleep(2)
#獲取對話框的內容
print (dialog_box.text) #打印警告對話框內容
#點擊【確認】顯示"您為何如此自信?"
dialog_box.accept() #接受彈窗
print (driver.find_element_by_xpath('xpath').text)
time.sleep(2)
#再次獲取confirm對話框的按鈕,點擊按鈕,彈出confirm對話框
driver.find_element_by_xpath('xpath').click()
#再次獲取confirm對話框
dialog_box = driver.switch_to_alert()
#點擊【取消】顯示"您為何如此謙虛?"
time.sleep(2)
#點擊取消
dialog_box.dismiss()
#關閉獲取取消對話框
print (driver.find_element_by_xpath('xpath').text)
driver.quit()
c、提示消息對話(prompt)
提示消息框提供了一個文本字段,用戶可以在此字段輸入一個答案來響應您的提示。該消息框有一個"確定"按鈕和一個"取消"按鈕。選擇"確認"會響應對應的提示信息,選擇"取消"會關閉對話框。
#獲取prompt對話框的按鈕,點擊按鈕,彈出confirm對話框
driver.find_element_by_xpath('xpath').click()
#獲取prompt對話框
dialog_box = driver.switch_to_alert()
#添加等待時間
time.sleep(2)
#獲取對話框的內容
print (dialog_box.text) #打印警告對話框內容
dialog_box.send_keys("2") #彈出框內輸入2
dialog_box.accept() #接受
print (driver.find_element_by_xpath('xpath').text) #獲取關閉彈窗結果 #獲取確認彈窗結果
'''這里等待幾秒在測試取消'''
time.sleep(2)
#************************點擊【取消】,并且獲取顯示結果**********************
driver.find_element_by_xpath('xpath').click()
#獲取prompt對話框
dialog_box = driver.switch_to_alert()
#添加等待時間
time.sleep(2)
dialog_box.dismiss() #關閉對話框
print (driver.find_element_by_xpath('xpath').text) #獲取關閉彈窗結果
time.sleep(2)
driver.quit()
selenium 提供switch_to_alert()方法定位到 alert/confirm/prompt對話框。使用 text/accept/dismiss/send_keys 進行操作,這里注意的是send_keys只能對prompt進行操作。
- switch_to_alert() #定位彈出對話
- text() ? ? ? ? ? ? ? ?#獲取對話框文本值
- accept() ? ? ? ? ? ? ? ? ? #相當于點擊"確認"
- dismiss() ? ? ? ? ? ? ? ? ?#相當于點擊"取消"
- send_keys() ? ? ? ? ? ? ?# 輸入值,這個alert和confirm沒有輸入對話框,所以這里就不能用了,所以這里只能使用在prompt這里。
8、表單-------提交表單
driver.find_element_by_id("id").submmit()
9、上傳文件
#coding=utf-8
from selenium import webdriver
import os,time
driver = webdriver.Firefox()
#腳本要與asd.html 同一目錄
file_path = os.path.abspath('需要上傳文檔的html文件的名稱')
print file_path
driver.get(file_path)
#定位上傳按鈕,添加本地文件
driver.find_element_by_xpath("html/body/div[1]/div/input").send_keys('上傳的文件的路徑')
time.sleep(2)
driver.quit()
10、鼠標懸停
# 導入selenium中的actionchains的方法
from selenium.webdriver.common.action_chains import ActionChains
#識別需要懸停的元素
ele = self.driver.find_element_by_class_name('class_name')
# 鼠標移到懸停元素上
ActionChains(self.driver).move_to_element(ele).perform()
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
