selenium

from selenium import webdriver(從selenium中引用web driver這個包)
from time import sleep()(引入一個time方法)
driver = web driver.Firefox()(打開火狐瀏覽器)
driver.get(「http://www.baidu.com」)(改變連接)
driver.quit()(關閉瀏覽器)
driver.maximize_window()(瀏覽器頁面最大化)
...
driver.get(http://m.mail.10086.cn)(手機界面的郵箱登錄)
print 「設置瀏覽器寬480 高800顯示"
driver.set_window_size(480,800)
sleep(2)(顯示兩秒鐘)
driver.quit()
input:輸入
print:輸出
                          http://blog.csdn.net/fnngj/article/details/25311511
 
20161018
一、python格式注意
if xxxxx
(空格)xxx
或者
def xxxxx
(空格)xxx
for  xxxxx
(空格)xxx
二、代碼
a = 「python"
for i in a:
     print i//輸出 p y t h o n
三、name =「zhangsan"
print」Hello %s,Nice to meet you」 %name 
Hello zhangsan ,Nice to meet you
%s(string)只能打印字符串,%d(data) 打印數字 %r 表示打印未知的數據類型
四、range
for i in range(1,10,2):
print i #輸出 1,3,5,7,9
range(start ,end ,scan)
五、字典{}表示,一個key對應一個value
zidian = {「senate」:」password」,’man’:’woman’,1:2}
zidian.key()輸出key
{’senate’,1,’man’}
zidian.value()輸出key
zidian.items()輸出key和value
20161019
一、模塊調用
def add(a,b):
     print a+b
import pub
print pub.add(4,5)
打印結果:9
若不在同一目錄下
import sys #調用sys模塊,將目錄添加到系統環境變量的path下面
sys.path.append(‘\model’) #此爲相對路徑,若不在同一目錄下用相對路徑,pwd查看(經常使用方法)
from model import pub
print pub.add(4,5)
二、異常處理
try…….except
#coding:utf-8
try:
     aa = '異常測試'
     print aa
except Exception,msg:
     print msg
else:
     print '沒有異常'
20161020
一、類與方法
python中用class關鍵字建立類
class A:
     def add(self,a,b):
          return a+b
class B:
     def sub(self,a,b):
          return a-b
count =B()
print count.add(4,5)#打印結果8
 
咱們在 BaseException 後面定義 msg 變量用於接收異常信息,經過 print 將其打印出來。 下面來認識一下 Python 中常見的異常:
異常                                   描述
 
BaseException               新的全部異常類的基類
exception                   全部異常類的基類,但繼承 BaseException
 AssertionError                              assert 語句失敗
AttributeError              試圖訪問一個對象沒有屬性
IOError                     輸入輸出異常,試圖打一個不存的文件(包括其它狀況)時引發                                                                  
NsmeError                  使用一個還未賦值對象的變量
IndexError                 在使用序列中不存在的所引進引起
IndentationError           語法錯誤,代碼沒有正確的對齊
 KeyboardInterrupt                         Ctrl+C 被按下,程序被強行終止
TypeError                   傳入的對象類型與要求不符
 SyntaxError                                  Python 代碼邏輯語法出錯,不能執行
20161024
一、web driver的8種元素定位方法:
(1)、ID
(2)、name
(3)、class name 
(4)、tag name 
(5)、link text
(6)、partial link text
(7)、xpath
(8)、css selector
二、在python語言中對應的定位方法以下:
find_element_by_id()
find_element_by_name()
find_element_by_class_name()
find_element_by_tag_name()
find_element_by_link_text()
find_element_by_partial_link_text()   部分文字連接定位方法
find_element_by_xpath()
find_element_by_css_selector()
三、HTML的結構
(1)它們都由標籤組成:
<hetml></html>
<body><body>
<div><div>
<form><form>
那麼html、div就是標籤的標籤名。
20161025
一、XPath定位
火狐瀏覽器中添加插件firebug和firepath
點擊須要定位的位置就可查看Xpath
find_element_by_xpath(「.//*[@id='su']")
二、若是一個屬性不能惟一的區分一個元素,能夠數用邏輯運算符連接多喝屬性
find_element_by_xpath(「//input[@id=‘kw’ and @class=’su’]/span/input")
20161026
一、將瀏覽器屏幕最大化
driver.maximize_window()
二、設置瀏覽器爲固定寬高
driver.get(「http://m.mail.10086.cn")
print」設置瀏覽器寬480、高800顯示"
driver.set_window_size(480,800)
driver.quit()
三、瀏覽器的前進與後退
前進:driver.forward()
後退:driver.back()
四、簡單元素操做
clear()                     清除文本。若是是一個文本輸入框
send_key(*value)     在元素上模擬按鍵輸入
click()                       單擊元素
size                          返回元素的尺寸
#s = dr.find_element_by_id("kw").size
print s
text                           獲取元素的文本
#s = dr.find_element_by_id("kw」).text(經常使用語斷言)
get_attribut(name)     得到屬性值,如id
is_displayed()              設置改元素是否用戶可見,返回true or false
20161028
一、ActionChains類提供的鼠標操做的經常使用方法:
perform()   執行全部ActionChains中的存儲行爲
context_click   右擊
double_click     雙擊 
drag_and_drop()  拖動
move_to_element()   鼠標懸停
from selenium import webdriver
#引入 ActionChains
from selenium.webdriver.common.action_chains import ActionChains
driver = webdriver.Firefox() driver.get("http://yunpan.360.cn") ....
#定位到要右擊的元素
right_click =driver.find_element_by_id("xx") #對定位到的元素執行鼠標右鍵操做 ActionChains(driver).context_click(right_click).perform()
二、鼠標操做
drag_and_drop(source,taget)在源元素上按下鼠標左鍵,而後移動到目標元素上釋放
source:  鼠標拖動的源元素
target:   鼠標是犯法的目標元素
#定位元素的源位置
element = driver.find_element_by_name("xxx")
#定位元素要移動到的目標位置
target = driver.find_element_by_name("xxx")
#執行元素的拖放操做
ActionChains(driver).drag_and_drop(element,target).perform()
三、鍵盤操做
#引入 Keys 模塊
from selenium.webdriver.common.keys import Keys
#刪除多輸入的一個 m driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE)
send_keys(Keys.BACK_SPACE) send_keys(Keys.SPACE)
send_keys(Keys.TAB) send_keys(Keys.ESCAPE) send_keys(Keys.ENTER)
製表鍵(Tab) 回退鍵(Esc) 回車鍵(Enter)
刪除鍵(BackSpace) 空格鍵(Space)
Selenium2 Python 自動化測試實戰》樣張 send_keys(Keys.CONTROL,'a') 全選(Ctrl+A)
send_keys(Keys.CONTROL,'c') 複製(Ctrl+C) send_keys(Keys.CONTROL,'x') 剪切(Ctrl+X) send_keys(Keys.CONTROL,'v') 粘貼(Ctrl+V) send_keys(Keys.F1) 鍵盤 F1 ......
send_keys(Keys.F12) 鍵盤 F12
四、得到驗證信息
得到title
title =dr.title
得到URL
now_url = dr.current_url
20161031
一、定位一組元素
#選擇頁面上全部的tag name爲input的元素
inputs = dr.find_elements_by_tag_name(‘input’)
#而後從中過濾出autocomplete==off的元素
for i in inputs:
    if i.get_attribute(‘autocomplete’)==‘off’:
        i.send_keys(’selenium’)
二、dr.find_element_by_link_text(u'新聞’).click
加’u’通常是解決中文亂碼的問題,將中文轉化成uncode的形式
三、xpath可使用and or等布爾類型,還可使用找父級的方法定位 
四、設置元素等待
WebDriverWait()提供的等待方法
四、1顯示等待
element = WebDriverWait(driver,5,0.5).until(
    EC.presence_of_element)located((by.ID,’kw')))
driver:驅動
5:最長等待時間
0.5:檢測頻率
input_:須要檢測的元素(定位)
四、2隱試等待
driver.implicitly_wait(30)
設置等待時間
20161101
一、多表單嵌套是不能直接定位到元素的,因此能夠用
switch_to_frame()先找到frame.html中的標籤,而後再定位百度輸入框
#切換到iframe(id = "if」) 
driver.switch_to_frame(「if」)
若是iframe沒有id和name
就先定位再用switvh_to_frame方法
#先經過 xpth 定位到 iframe 
if = driver.find_element_by_xpath('//*[@class="if」]’)
退出上一層表單
driver.switch_to_default_content()
current_window_handle    #得到當前窗口句柄
window_handles    #返回的全部窗口的句柄到當前會話
switch_to_window()
20161102
一、警告框的處理
text    返回alert/confirm/prompt/中的文字信息
accept    點擊確認按鈕
dismiss    點擊取消按鈕,若是有的話。
send_keys    輸入值,這個alert\confirm 沒有對話框就不能用了,否則會報錯
#接受彈窗
driver.switch_to_alert().accept()
二、上傳文件
driver.find_element_by_name(「file」).send.keys(‘D:\\upload_fle.txt')    #定位上傳按鈕,添加本地文件
autoit是windows的操做控件
引用本地文件
import os
os.system(‘D:\\upload_fle.txt')
三、下載文件
設置瀏覽器的默認設置,調用firefoxprofile方法
fp.set_preference("browser.download.folderList",2)     #設置成0表明下載到瀏覽器默認下載地址,設置爲2則能夠保存到指定目錄
fp.set_preference("browser.download.manager.showWhenStarting",False)    #是否顯示開始,Ture爲顯示,Flase爲不顯示
 fp.set_preference("browser.download.dir", os.getcwd())    #os.getcwd(),返回當前的目錄 須要import os
 fp.set_preference(「browser.helperApps.neverAsk.saveToDisk」,    #下載的文件格式
四、對cookie進行操做
driver.get.cookies()    #得到cookie
driver.add.cookie({’name’:’zhuangsan’,’value’:’12346'})    #添加cookie
打印想要的cookie,使用規定的格式
for cookie in driver.get.cookies():
    print 「%s -> %s」%(cookie[’name’],cookie[‘value’])
delete_all_cookies()    #刪除cookie信息
五、調用javaScript
操做瀏覽器滾動條
引用js的使用方法
js = 「var q=document.documentElemrnt.scrolltop=10000」
driver.execute_script(js)    #該方法可以使用js
20161104
一、窗口截圖
driver.get_screenshot_as_file(「D:\\baidu_error.jpg」)
二、驗證碼的處理
(1)、非正式環境的話直接註釋掉驗證碼便可
(2)、若爲正式環境的話可設置一個萬能碼
import random
verify = random.randint(1000,9999)     #生成一個1000到9999之間的隨機整數
print u"生成的隨機數:%d" %verify
number =input(u"請輸入隨機數:」)
 
if number  ==verify:
     print u"登錄成功"
elif number == 132741:
     print u"登錄成功"
else:
     print u"驗證碼輸入有誤"
randint()用於生成隨機數
二、自動化測試模擬
模塊化的驅動
登錄和退出不用每次都寫的,直接調用模塊就行
首先import文件和函數
其次調用函數
寫函數的時候再括號里加上必定義值
三、數據驅動
一、txt的文件讀取
read()讀取整個文件
readline()讀取一行數據
readlines()讀取全部行數據
文件的讀取:file _info = open(‘info.txt’,’r’)
文件多行讀取放入values :values = file_info.readlines()
讀取用戶名和密碼
用該方法進行拆分,除痘號外,其它符號同理
liuqingqing,123
username = serch.split(‘,’)[0]
print username 
password = search.split(‘,’)[1]
print password
相關文章
相關標籤/搜索