2021-01-13

作者:桃子df?

本文以一個(gè)頁(yè)面例子說明運(yùn)行自動(dòng)化腳本需要哪些步驟及實(shí)現(xiàn)過程中的報(bào)錯(cuò)匯總

具體實(shí)現(xiàn)功能:

登錄操作

進(jìn)入三級(jí)菜單

新建頁(yè)面輸入文本框值宝冕,輸入時(shí)間,進(jìn)入iframe智末,點(diǎn)擊提交按鈕

一 自動(dòng)化實(shí)現(xiàn)步驟

首先需要導(dǎo)入模塊名

有些功能selenium框架已經(jīng)封裝好了哨鸭,只需要我們直接調(diào)用就好

常用的導(dǎo)入功能

from selenium import webdriver? #導(dǎo)入webdriver驅(qū)動(dòng)

from time import sleep? #導(dǎo)入sleep函數(shù)

from selenium.webdriver.common.action_chains import ActionChains? #導(dǎo)入ActionChains 函數(shù)

from selenium.webdriver.support.select import Select#導(dǎo)入select函數(shù)

webdriver驅(qū)動(dòng):通過webdriver驅(qū)動(dòng)來調(diào)用瀏覽器

sleep函數(shù):正常網(wǎng)頁(yè)加載過程中斩熊,如果不通過時(shí)間等待再點(diǎn)擊元素是無法定位到元素里逆,從而報(bào)錯(cuò)进胯,sleep函數(shù)是自動(dòng)化過程中經(jīng)常用到的功能

ActionChains 函數(shù):ActionChains 是模擬鼠標(biāo)事件的函數(shù)

啟動(dòng)瀏覽器

所有的自動(dòng)化操作都是基于頁(yè)面打開的前提下,所以我們的首要步驟顯示要啟動(dòng)瀏覽器运悲。

在Selenium 中可以啟動(dòng)任何瀏覽器龄减,前提是需要下載相應(yīng)的瀏覽器驅(qū)動(dòng)

這里以chrom瀏覽器為例

代碼實(shí)現(xiàn):

chrome_options = webdriver.ChromeOptions()

chrome_options.add_experimental_option("excludeSwitches", ['enable-automation'])

driver = webdriver.Chrome(options=chrome_options)

driver.get("http://127.0.0.1:8080/portal-web/framework/login?")

driver.maximize_window()

功能實(shí)現(xiàn)

3.1 元素定位

剛接觸自動(dòng)化的同學(xué)可能都被元素定位搞的暈頭轉(zhuǎn)向

元素定位有八大方式(id、tagname班眯、class希停、xpath等等),到底使用哪一種呢

所有的元素定位方式我都用到了署隘,還是不能定位到元素這到底是什么原因呢

剛開始我也是這樣宠能,經(jīng)過一段時(shí)間的摸索發(fā)現(xiàn)原來是這樣~~

元素定位-id,id是唯一磁餐,通過id可定位任何元素

元素定位-xpath定位:其他定位方式都不會(huì)违崇,只要會(huì)xpath就能搞定定位問題

定位不到:考慮時(shí)間、窗體诊霹、ifame等因素

3.2 元素方法

click()-單擊(最常用)

driver.find_element_by_id('dlu').click()

send_keys? 文本框輸入內(nèi)容

driver.find_element_by_id('password').send_keys('11qq!!')

實(shí)現(xiàn)功能:登錄功能

driver.find_element_by_name("username").send_keys('b')#定位用戶名羞延,輸入值

driver.find_element_by_id('password').send_keys('11qq!!')#定位密碼,輸入值

driver.find_element_by_id('dlu').click()#點(diǎn)擊登錄按鈕

double_click? 雙擊

ActionChains(driver).double_click(ul1).perform()? ?

實(shí)現(xiàn)功能:雙擊進(jìn)入三級(jí)菜單

ul1=driver.find_element_by_xpath("http://*[text()='質(zhì)量基礎(chǔ)']")

ActionChains(driver).double_click(ul1).perform()#雙擊一級(jí)菜單

ul2=driver.find_element_by_xpath("http://*[text()='供應(yīng)商產(chǎn)品質(zhì)量維持認(rèn)證']")

ActionChains(driver).double_click(ul2).perform()#雙擊二級(jí)菜單

ul3=driver.find_element_by_xpath("http://*[text()='供應(yīng)商產(chǎn)品質(zhì)量維持認(rèn)證計(jì)劃']")

ActionChains(driver).double_click(ul3).perform()#雙擊三級(jí)菜單

sleep(3)

iframe 標(biāo)簽,這塊屬于自動(dòng)化的重點(diǎn)及難點(diǎn)

driver.switch_to.frame('data_iframe')#進(jìn)入標(biāo)簽

driver.switch_to.parent_frame() #跳回到上層標(biāo)簽

driver.switch_to.default_content()#退出標(biāo)簽

實(shí)現(xiàn)功能:三個(gè)iframe間切換操作

時(shí)間控件

時(shí)間控件正常操作是點(diǎn)擊并選擇時(shí)間

自動(dòng)化input標(biāo)簽由于readonly 屬性脾还,所以日期控件是不允許輸入的伴箩,那么我們主要通過js來刪除或者readonly制成否,這樣可以直接允許輸入鄙漏。

js = "$('.kendoDate').removeAttr('readonly')"? # jQuery嗤谚,移除屬性

driver.execute_script(js) #執(zhí)行js腳本

實(shí)現(xiàn)功能

js = "$('.kendoDate').removeAttr('readonly')"? # jQuery,移除屬性

driver.execute_script(js)

sleep(2)

driver.find_element_by_xpath('//*[@id="myform"]/table/tbody/tr[3]/td[4]/span/span/input').send_keys("2020-06-22")#輸入固定日期

#認(rèn)證日期

driver.find_element_by_xpath('//*[@id="mybody"]/tr/td[7]/span/span/input').send_keys('2020-06-22')

driver.find_element_by_xpath('//*[@id="mybody"]/tr/td[8]/span/span/input').send_keys('2020-06-22')

6.鍵盤操作

driver.find_element_by_class().send_keys(Keys.CONTROL+'a')

執(zhí)行完操作后關(guān)閉瀏覽器

driver.quit()

二 報(bào)錯(cuò)處理方案

pycharm 引入包報(bào)錯(cuò)怔蚌,選中模塊名稱【右鍵】->【mark directory as 】->【sources root】

圖片: https://uploader.shimo.im/f/D7sNMzDamhfHgqfK.png

pycharm 中如何調(diào)節(jié)字體大小位置

菜單欄:file ----> setting —> editor —>font —> size 修改為需要大小字號(hào)例如20巩步,點(diǎn)擊ok

消息彈窗3秒消失,無法定位彈窗元素

圖片: https://uploader.shimo.im/f/RxYyHIxSuUIx2CqF.png

打開F12桦踊,在source里面點(diǎn)擊暫停腳本執(zhí)行椅野,把元素定住回还,然后再去寫xpath定位

測(cè)試報(bào)告點(diǎn)擊瀏覽器打開提示“系統(tǒng)找不到文件chrome

出現(xiàn)該報(bào)錯(cuò)主要是因?yàn)槟銢]有進(jìn)行chrome瀏覽器安裝路徑的配置殿遂,解決方法很簡(jiǎn)單:

打開pycharm–》File–》setting–》Tools–》Web Browsers

在Default Browser一欄勾選Custom Path(敲黑板)

然后將chrome的路徑改為安裝路徑即可,如圖所示:

圖片: https://uploader.shimo.im/f/6aOlR1ChJEHFMelE.png

運(yùn)行腳本章办,提示chrome正在受到自控軟件控制-屬于chrome瀏覽器特有的問題

首先查看瀏覽器版本? 75版本以下 :

option = webdriver.ChromeOptions()

option.add_argument('disable-infobars')

driver = webdriver.Chrome(chrome_options=option)

url=''

driver.get(url)

————————————————

75版以上

chrome_options = webdriver.ChromeOptions();

chrome_options.add_experimental_option("excludeSwitches", ['enable-automation']);

driver = webdriver.Chrome(options=chrome_options);

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末芒炼,一起剝皮案震驚了整個(gè)濱河市瘫怜,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌本刽,老刑警劉巖鲸湃,帶你破解...
    沈念sama閱讀 218,682評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件赠涮,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡暗挑,警方通過查閱死者的電腦和手機(jī)笋除,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,277評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來炸裆,“玉大人垃它,你說我怎么就攤上這事∨肟矗” “怎么了国拇?”我有些...
    開封第一講書人閱讀 165,083評(píng)論 0 355
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)惯殊。 經(jīng)常有香客問我酱吝,道長(zhǎng),這世上最難降的妖魔是什么土思? 我笑而不...
    開封第一講書人閱讀 58,763評(píng)論 1 295
  • 正文 為了忘掉前任务热,我火速辦了婚禮,結(jié)果婚禮上己儒,老公的妹妹穿的比我還像新娘崎岂。我一直安慰自己,他們只是感情好闪湾,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,785評(píng)論 6 392
  • 文/花漫 我一把揭開白布冲甘。 她就那樣靜靜地躺著,像睡著了一般响谓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上省艳,一...
    開封第一講書人閱讀 51,624評(píng)論 1 305
  • 那天娘纷,我揣著相機(jī)與錄音,去河邊找鬼跋炕。 笑死赖晶,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的辐烂。 我是一名探鬼主播遏插,決...
    沈念sama閱讀 40,358評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼纠修!你這毒婦竟也來了胳嘲?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,261評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤扣草,失蹤者是張志新(化名)和其女友劉穎了牛,沒想到半個(gè)月后颜屠,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,722評(píng)論 1 315
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡鹰祸,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,900評(píng)論 3 336
  • 正文 我和宋清朗相戀三年甫窟,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片蛙婴。...
    茶點(diǎn)故事閱讀 40,030評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡粗井,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出街图,到底是詐尸還是另有隱情浇衬,我是刑警寧澤,帶...
    沈念sama閱讀 35,737評(píng)論 5 346
  • 正文 年R本政府宣布台夺,位于F島的核電站径玖,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏颤介。R本人自食惡果不足惜梳星,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,360評(píng)論 3 330
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望滚朵。 院中可真熱鬧冤灾,春花似錦、人聲如沸辕近。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,941評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)移宅。三九已至归粉,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間漏峰,已是汗流浹背糠悼。 一陣腳步聲響...
    開封第一講書人閱讀 33,057評(píng)論 1 270
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留浅乔,地道東北人倔喂。 一個(gè)月前我還...
    沈念sama閱讀 48,237評(píng)論 3 371
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像靖苇,于是被迫代替她去往敵國(guó)和親席噩。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,976評(píng)論 2 355

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

  • 參考鏈接: web自動(dòng)化測(cè)試教案:http://www.cnblogs.com/zidonghua/p/74300...
    永杰gg閱讀 1,055評(píng)論 0 0
  • [TOC] 簡(jiǎn)介 Selenium 是一個(gè)用于Web應(yīng)用程序測(cè)試的工具贤壁。Selenium測(cè)試直接運(yùn)行在瀏覽器中悼枢,就...
    Whyn閱讀 1,058評(píng)論 0 2
  • 一、自動(dòng)化測(cè)試所屬分類(站在代碼可見度角度分類) 1. 黑盒測(cè)試(功能測(cè)試)2. 灰盒測(cè)試(接口測(cè)試)3. 白盒測(cè)...
    MAVIS_42bf閱讀 904評(píng)論 0 0
  • 完善融寶UI自動(dòng)化框架 繼續(xù)總結(jié)自動(dòng)化測(cè)試API "29.模擬鍵盤單個(gè)按鍵/組合按鍵操作脾拆," # import t...
    公子小白123閱讀 1,057評(píng)論 0 1
  • 非本人編寫 原文:https://www.cnblogs.com/jcshuaiashuai/p/10372616...
    小巷_4eda閱讀 340評(píng)論 0 0