自動(dòng)化測(cè)試學(xué)習(xí)筆記 - 初學(xué)篇(2)

游覽器的相關(guān)操作

# -*- coding: utf-8 -*-
chromedriver = "/Applications/Google Chrome.app/Contents/MacOS/chromedriver"

from selenium import webdriver

brower.get('https://www.baidu.com/')
brower.maximize_window()
brower.find_element_by_id('kw').send_keys('selenium')
brower.find_element_by_id('su').click()

1焰坪、游覽器最大化

brower.maximize_window()

2凉驻、設(shè)置游覽器寬高

brower.set_window_size(200, 0, 1340, 1000)

3酝枢、游覽器的前進(jìn)渡冻、后退(webdriver提供了back()和forward()方法)

對(duì)象的處理

一個(gè)對(duì)象就像是一個(gè)人砾赔,他會(huì)有各種的特征(屬性),如比我們可以通過(guò)一個(gè)人的身份證號(hào)么翰、姓名或 者他的住址找到這個(gè)人浩嫌。那么一個(gè)元素也有類(lèi)似的屬性追迟,我們可以通過(guò)這種唯一區(qū)別于其它元素的屬性來(lái) 定位這個(gè)元素。當(dāng)然廓块,除了要操作元素時(shí)需要定位元素外,有時(shí)候我們只是為了獲得元素的屬性(class 屬 性契沫,name 屬性)带猴、text 或數(shù)量也需要定位元素。

* id
* name
* class name
* tag name
* link text
* partial link text
* xpath
* css selector

其對(duì)應(yīng)的方法是

* find_element_by_id() 根據(jù)id進(jìn)行定位
* find_element_by_name()根據(jù)元素中name 進(jìn)行定位
* find_element_by_class_name() 根據(jù) class定位進(jìn)行查找
* find_element_by_tag_name() 通過(guò) tag 標(biāo)簽名對(duì)對(duì)元素進(jìn)行定位 這種定位很不靠譜
* find_element_by_link_text() 拿到文字鏈接的 通過(guò)文字
* find_element_by_partial_link_text()
* find_element_by_xpath() find_element_by_css_selector()

XPath 是一種在 XML 文檔中定位元素的語(yǔ)言懈万。因?yàn)?HTML 可以看做 XML 的一種實(shí)現(xiàn)拴清,所以 selenium 用
戶可是使用這種強(qiáng)大語(yǔ)言在 web 應(yīng)用中定位元素靶病。
XPath 擴(kuò)展了上面 id 和 name 定位方式,提供了很多種可能性口予,比如定位頁(yè)面上的第三個(gè)多選框嫡秕。

<html class="w3c">
<body>
   <div class="page-wrap">
   <div id="hd" name="q">
   <form target="_self" action="http://www.so.com/s">   <span id="input-container">
<input id="input" type="text" x-webkit-speech="" autocomplete="off" suggestwidth="501px" >

find_element_by_xpath("/html/body/div[2]/form/span/input")

相對(duì)路徑定位:
find_element_by_xpath("http://input[@id=’input’]") #通過(guò)自身的id屬性定位 find_element_by_xpath("http://span[@id=’input-container’]/input") #通過(guò)上一級(jí)目錄的 id 屬性定位 find_element_by_xpath("http://div[@id=’hd’]/form/span/input") #通過(guò)上三級(jí)目錄的 id 屬性定位 find_element_by_xpath("http://div[@name=’q’]/form/span/input")#通過(guò)上三級(jí)目錄的 name 屬性定位

操作測(cè)試對(duì)象

webdriver 中比較常用的操作元素的方法有下面幾個(gè):

1 clear 清除元素的內(nèi)容,如果可以的話
2 send_keys 在元素上模擬按鍵輸入
3 click 單擊元素
4 submit 提交表單

WebElement接口常用方法

size 返回尺寸
text 返回元素名稱
get_attribute(name) 獲取屬性值
is_displayed()

鼠標(biāo)鍵盤(pán)事件

ActionChains鼠標(biāo)操作用到的方法

在進(jìn)行操作之前苹威,應(yīng)該導(dǎo)入from selenium.webdriver.common.action_chains import ActionChains

名字 對(duì)應(yīng)的事件
context_click( ) 右擊
double_click( ) 雙擊
drag_and_drop( ) 拖動(dòng)
move_to_element( ) 鼠標(biāo)懸停在一個(gè)元素上
click_and_hold( ) 按下鼠標(biāo)左鍵在一個(gè)元素上
鍵盤(pán)方法

我們?cè)趯?shí)際的測(cè)試工作中昆咽,有時(shí)候我們?cè)跍y(cè)試時(shí)需要使用 tab 鍵將焦點(diǎn)轉(zhuǎn)移到下一個(gè)元素,用于驗(yàn) 證元素的排序是否正確牙甫。webdriver 的 Keys()類(lèi)提供鍵盤(pán)上所有按鍵的操作掷酗,甚至可以模擬一些組合建的 操作,如 Ctrl+A ,Ctrl+C/Ctrl+V 等窟哺。在某些更復(fù)雜的情況下泻轰,還會(huì)出現(xiàn)使用 send_keys 來(lái)模擬上下鍵 來(lái)操作下拉列表的情況。

#coding=utf-8
from selenium import webdriver
#引入 Keys 類(lèi)包
from selenium.webdriver.common.keys import Keys

import time

chromedriver = "/Applications/Google Chrome.app/Contents/MacOS/chromedriver"
driver = webdriver.Chrome(chromedriver)

driver.get("http://www.baidu.com")

#輸入框輸入內(nèi)容
driver.find_element_by_id("kw").send_keys("selenium")
time.sleep(3)

#刪除多輸入的一個(gè) m
driver.find_element_by_id("kw").send_keys(Keys.BACK_SPACE)
time.sleep(3)

#輸入空格鍵+“教程”
driver.find_element_by_id("kw").send_keys(Keys.SPACE)
driver.find_element_by_id("kw").send_keys(u"教程")
time.sleep(3)
#ctrl+a 全選輸入框內(nèi)容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'a')

time.sleep(3)
#ctrl+x 剪切輸入框內(nèi)容
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'x')
time.sleep(3)
#輸入框重新輸入內(nèi)容且轨,搜索
driver.find_element_by_id("kw").send_keys(Keys.CONTROL,'v')

time.sleep(3)

#通過(guò)回車(chē)鍵盤(pán)來(lái)代替點(diǎn)擊操作
driver.find_element_by_id("su").send_keys(Keys.ENTER)
time.sleep(3)

driver.quit()
名字 鍵盤(pán)對(duì)應(yīng)的事件
send_keys(Keys.BACK_SPACE) 刪除鍵(BackSpace)
send_keys(Keys.SPACE) 空格鍵(Space)
send_keys(Keys.TAB) 制表鍵(Tab)
send_keys(Keys.ESCAPE) 回退鍵(Esc)
send_keys(Keys.ENTER) 回車(chē)鍵(Enter)
send_keys(Keys.CONTROL,'a') 全選(Ctrl+A)
send_keys(Keys.CONTROL,'c') 復(fù)制(Ctrl+C)
send_keys(Keys.CONTROL,'x') 剪切(Ctrl+X)
send_keys(Keys.CONTROL,'v') 粘貼(Ctrl+V)
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末浮声,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子旋奢,更是在濱河造成了極大的恐慌泳挥,老刑警劉巖,帶你破解...
    沈念sama閱讀 212,718評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件至朗,死亡現(xiàn)場(chǎng)離奇詭異屉符,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)锹引,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,683評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門(mén)矗钟,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人嫌变,你說(shuō)我怎么就攤上這事吨艇。” “怎么了腾啥?”我有些...
    開(kāi)封第一講書(shū)人閱讀 158,207評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵东涡,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我碑宴,道長(zhǎng)软啼,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,755評(píng)論 1 284
  • 正文 為了忘掉前任延柠,我火速辦了婚禮祸挪,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘贞间。我一直安慰自己贿条,他們只是感情好雹仿,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,862評(píng)論 6 386
  • 文/花漫 我一把揭開(kāi)白布。 她就那樣靜靜地躺著整以,像睡著了一般胧辽。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上公黑,一...
    開(kāi)封第一講書(shū)人閱讀 50,050評(píng)論 1 291
  • 那天邑商,我揣著相機(jī)與錄音,去河邊找鬼凡蚜。 笑死人断,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的朝蜘。 我是一名探鬼主播恶迈,決...
    沈念sama閱讀 39,136評(píng)論 3 410
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼谱醇!你這毒婦竟也來(lái)了暇仲?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,882評(píng)論 0 268
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤副渴,失蹤者是張志新(化名)和其女友劉穎奈附,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體佳晶,經(jīng)...
    沈念sama閱讀 44,330評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡桅狠,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,651評(píng)論 2 327
  • 正文 我和宋清朗相戀三年讼载,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了轿秧。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,789評(píng)論 1 341
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡咨堤,死狀恐怖菇篡,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情一喘,我是刑警寧澤驱还,帶...
    沈念sama閱讀 34,477評(píng)論 4 333
  • 正文 年R本政府宣布,位于F島的核電站凸克,受9級(jí)特大地震影響议蟆,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜萎战,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 40,135評(píng)論 3 317
  • 文/蒙蒙 一咐容、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧蚂维,春花似錦戳粒、人聲如沸路狮。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,864評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)奄妨。三九已至,卻和暖如春苹祟,著一層夾襖步出監(jiān)牢的瞬間砸抛,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 32,099評(píng)論 1 267
  • 我被黑心中介騙來(lái)泰國(guó)打工树枫, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留锰悼,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 46,598評(píng)論 2 362
  • 正文 我出身青樓团赏,卻偏偏與公主長(zhǎng)得像箕般,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子舔清,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,697評(píng)論 2 351

推薦閱讀更多精彩內(nèi)容