日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Selenium自动化框架理论总结

發(fā)布時間:2023/12/29 编程问答 28 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Selenium自动化框架理论总结 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

一、自動化原理

1、結(jié)構(gòu)圖:

自動化程序(selenium客戶端庫) <-->? 瀏覽器驅(qū)動器? ?<-->? 瀏覽器

其中自動化程序通過http協(xié)議與瀏覽器驅(qū)動器進(jìn)行交互

2、安裝:

(1)selenium客戶端庫:pip install selenium

(2)瀏覽器驅(qū)動器:需要額外下載,實際上就是一個exe文件,不需要其他操作

3、基本代碼

from selenium import webdriver #根據(jù)驅(qū)動器創(chuàng)建一個webdriver對象,并啟動瀏覽器 wd=webdriver.Chorme('瀏覽器的路徑/驅(qū)動器文件')# Chorme Firefox Ie Safari Edge #利用wd對元素進(jìn)行定位操作、對窗口等進(jìn)行操作 wd.get('url') #請求訪問對應(yīng)網(wǎng)頁 wd.quit() #關(guān)閉瀏覽器窗口

二、元素定位的幾種常用方法

下面代碼中的wd可以替換為WebElement實例,查找范圍由原來的整個頁面更改為對應(yīng)元素的內(nèi)部;比較特殊的xpath,當(dāng)使用webelement時,參數(shù)前一定要加上.開頭

1、id

elements=wd.find_elements_by_id('id值') #以列表的形式返回所有符合元素;若無,空列表 element=wd.find_element_by_id('值') #返回第一個符合條件的元素;如無,拋出異常

2、class

elements=wd.find_elements_by_class_name('class值') #以列表的形式返回所有符合元素;若無,空列表 elements=wd.find_element_by_class_name('class值') #返回第一個符合條件的元素;如無,拋出異常

3、name

elements=wd.find_elements_by_name('值') #以列表的形式返回所有符合元素;若無,空列表 element=wd.find_element_by_name('值') #返回第一個符合條件的元素;如無,拋出異常

4、tag

elements=wd.find_elements_by_tag_name('值') #以列表的形式返回所有符合元素;若無,空列表 element=wd.find_element_by_tag_name('值') #返回第一個符合條件的元素;如無,拋出異常

5、css選擇器

elements=wd.find_elements_by_css_selector('參數(shù)') #以列表的形式返回所有符合元素;若無,空列表 element=wd.find_element_by_css_selector('參數(shù)') #返回第一個符合條件的元素;如無,拋出異常

(1)按照tag? ? 參數(shù):標(biāo)簽名

(2)按照屬性

  • id? ?參數(shù):#id值
  • class? ?參數(shù):.class值
  • 其他屬性? 參數(shù): [屬性名=’屬性值‘] ,其中屬性值的引號可省略

補(bǔ)充:屬性值部分可以進(jìn)行三總模糊查詢,分別如下所示:

? ? ? ? ? *= (包含)? ^= (以...開頭)? $=? (以...結(jié)尾)

(3)按照次序選擇子節(jié)點(diǎn)?? ? ? ?參數(shù)為? ? :nth-child(m) ,?本身父元素的第m個子節(jié)點(diǎn)

參數(shù)為? ? ?:nth-last-child(m),?本身父節(jié)點(diǎn)的倒數(shù)第m個子節(jié)點(diǎn)?? ? ? ??

(4)按照類型選擇子節(jié)點(diǎn)? ? ? ? 參數(shù)為? ? :nth-of-type(m),本身父元素的第m個類型的子節(jié)點(diǎn)

參數(shù)為? ? ?:nth-last-of-type(m),?本身父節(jié)點(diǎn)的倒數(shù)第m個子節(jié)點(diǎn)?? ??

補(bǔ)充:(3)(4)中的函數(shù)可以使用兩個特別的值:odd(奇數(shù))和even(偶數(shù))

(5)兄弟節(jié)點(diǎn)的選擇? ? ?

  • 相鄰兄弟? ? 類型 + 類型
  • 后續(xù)所以兄弟,包括表兄弟? ? ?類型~類型

(6)子代和后代的選擇

  • 子代? ?>
  • 后代? ? 空格

注意:css選擇器還可以組選擇,只需要用 逗號 隔開就好;也可以聯(lián)合使用,只需要沒有空格的連著寫即可

6、Xpath選擇器

elements=wd.find_elements_by_xpath('參數(shù)') #以列表的形式返回所有符合元素;若無,空列表 element=wd.find_element_by_xpath('參數(shù)') #返回第一個符合條件的元素;如無,拋出異常

? ? 絕對路徑:以 / 開頭,將每層依次寫下,用 / 隔開,類似子代

? ? 相對路徑:以? // 間隔 ,類似后代

? ? 不管是絕對還是相對路徑,每一層都要有標(biāo)簽或者通配符*

(1)根據(jù)屬性選擇(id class與其他屬性一視同仁)

格式?:? [@屬性名="屬性值"],其中屬性值的引號不可省,但是可單可雙,要在標(biāo)簽或*后使用

也可以進(jìn)行模糊查詢,具體有三種形式:

  • [contain(@屬性名,'值')]? 包含
  • [starts-with(@屬性名,'值')]? 以...開頭
  • [ends-with(@屬性名,'值')]? 以...結(jié)尾,但是這屬于xpath2.0語法,目前瀏覽器不支持

(2)根據(jù)次序選擇

  • 標(biāo)簽名[n]或者*[n]? ? 分別表示選擇標(biāo)簽名的第n個或者第n個
  • 標(biāo)簽名[last()-n]或者*[last()-n]? ?分別表示標(biāo)簽名的倒數(shù)第n+1個或者倒數(shù)第n+1個
  • 標(biāo)簽名[position()<n]或者*[position()<n]? ?其中<可以換成其他的比較符號,last()也可應(yīng)用于n

(3)父節(jié)點(diǎn)? ? ?/..

? ? ? ? 后續(xù)親兄弟節(jié)點(diǎn)? ?/following-sibling::*或tag名

? ? ? ? 前面親兄弟節(jié)點(diǎn)? ?/preceding-sibling::*或tag名

:也可以進(jìn)行組選擇,使用 | 連接

7、專門用于定位超鏈接的,也就是對應(yīng)html頁面中的<a>標(biāo)簽,括號里傳的值就是a標(biāo)簽中的超鏈接文字,兩者的區(qū)別在于一個是完整的超鏈接文字,一個是可以只寫部分超鏈接文字。

link復(fù)數(shù)定位find_element(s)_by_link_text()

partial_link復(fù)數(shù)定位find_element(s)_by_partial_link_text()

三、元素操作(點(diǎn)擊、輸入、獲取以及鼠標(biāo)和鍵盤操作等)

定位元素的函數(shù) find_elements_by_xxx()返回一個WebElement對象element,然后就可以進(jìn)行元素操作,常見的如下:

click(),send_keys(' ') ,text, get_attribute('屬性名') [innerHTML? outerHTML 是特殊的參數(shù)]

補(bǔ)充 : text屬性如果不顯示或只顯示部分內(nèi)容,可用get_attribute('innerHTML')或者('textContent')

輸入框輸入的內(nèi)容不可以通過text屬性獲得,要用get_attribute('value')

四、實戰(zhàn)技巧

1、radio? checkbox? select三種選擇框元素

(1)radio和checkbox都對應(yīng)input標(biāo)簽,type類型不同,分別對象單選和多選,一組的采用同一個name值

? ? ? ? select對應(yīng)的select標(biāo)簽,選項放在option標(biāo)簽內(nèi),默認(rèn)為單選,在select中添加屬性multiple改為多選

(2)radio? ?click() 選中 ;checkbox? ?click() 選中和未選中狀態(tài)切換

(3)select有專門的類進(jìn)行處理Select(select元素)實例化

(de)select_by_value()? ? (de)select_by_index()? (de)select_by_visible_text()? ? ?deselect_all()

2、alert? confirm? prompt三種彈出框 alert=wd.switch_to.alert

(1)alert:? ?alert.text? ? ;? ?alert.accept()

(2)confirm:? alert.text? ?;? ?alert.accept();? ?alert.dismiss()

(3)prompt :? ?alert.send_keys()? ;?? alert.text? ?;? ?alert.accept();? ?alert.dismiss()

3、frame切換

(1)frame或iframe標(biāo)簽利用src屬性指定一個html文件,使其嵌入到當(dāng)前HTML文件中;但是由于wd的訪問范圍不包括嵌入頁面的,所以如果需要訪問嵌入文件的元素,需要切換frame

(2)wd.switch_to.frame(' ')? 參數(shù)為frame的特征或者對應(yīng)的webelement元素

? ? ? ? ?wd.switch_to.default_content()? 返回到原來的frame

4、窗口切換

wd.title

wd.switch_to.window(handle), 其中handle要通過wd.window_handles結(jié)合一些條件查找到的

mainWindow=wd.current_window_handle

5、界面等待管理

某些元素內(nèi)容不會立即出現(xiàn),wd捕捉不到。selenium提供了一個方案:周期性(0.5s)重新尋找元素,直到元素找到或者超出最大等待時間拋出異常;

wd.implicitly(n):最大等待時間為n毫秒

要注意的是,周期性尋找的前提是找不到,如果找到了雖然是不正確的,那這個是不會處理這個情況的(一般只能sleep下)

?

?

?

?

?

?

?

?

?

?

?

?

總結(jié)

以上是生活随笔為你收集整理的Selenium自动化框架理论总结的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 91福利免费 | av在线观看地址 | 丰满熟妇人妻中文字幕 | 粉嫩av国产一区二区三区 | 成人欧美一区二区三区 | 毛片av网址 | 免费亚洲一区二区 | 国产男女视频在线观看 | 永久看看免费大片 | 日韩av一区在线播放 | 北条麻妃一区二区三区在线观看 | 四虎一国产精品一区二区影院 | 欧美一级淫片免费视频魅影视频 | 九九九久久久久 | 日日噜噜噜 | 成人手机在线播放 | 日韩毛片在线 | 99国产精品久久久 | 中文字幕色哟哟 | 91色在线 | 中文国产视频 | 美国黄色一级大片 | 爱情岛成人 | 久久精品免费电影 | 老女人综合网 | 中文字幕11页中文字幕11页 | 97人妻人人揉人人躁人人 | 亚洲一区中文字幕在线观看 | a亚洲天堂| 欧美国产日韩一区 | 特级西西444www高清大胆免费看 | 亚洲欧美综合一区二区 | 久久av免费观看 | 亚洲无码久久久久久久 | 亚洲精品四区 | 3d动漫精品啪啪一区二区免费 | 国产一精品一aⅴ一免费 | 亚洲免费视频一区 | 在线99热 | 风韵少妇性饥渴推油按摩视频 | 韩国视频一区二区 | 欧美人喂奶吃大乳 | 欧美一区二区三区免费在线观看 | 天海翼视频在线观看 | 久久另类ts人妖一区二区 | 日韩精品无| 欧美日韩一级在线观看 | 性xxxx欧美| 伊人免费视频 | 少妇性l交大片7724com | 亚洲国产aⅴ精品一区二区 日韩黄色在线视频 | 性工作者十日谈 | 污漫网站| 亚洲91色 | 久久久穴 | 夫妻淫语绿帽对白 | 亚洲av男人的天堂在线观看 | 久草香蕉视频 | 午夜宅男在线 | av亚洲在线观看 | 超碰免费公开 | 国产探花一区二区三区 | 黄色片链接 | 无码精品国产一区二区三区 | 台湾男男gay做爽爽的视频 | 熟女少妇在线视频播放 | 少妇太爽了太深了太硬了 | 国产情侣小视频 | www.999热| 91偷拍富婆spa盗摄在线 | 久久国产一区二区三区 | 亚洲免费看片 | aa一级黄色片 | 亚洲免费av电影 | 丰满少妇在线观看资源站 | 精品av一区二区 | 免费看黄视频的网站 | 性大毛片视频 | 制服丝袜av在线播放 | 麻豆蜜桃av | 国产专区欧美专区 | 高h捆绑拘束调教小说 | 一级特黄色 | 国产免费黄网站 | 成人a网站 | 亚洲一区 欧美 | 成年人av在线播放 | 欧美日韩卡一卡二 | 好男人天堂网 | av不卡网 | 97se亚洲 | 国产麻豆一精品一av一免费 | 国产精品亚洲综合 | 各处沟厕大尺度偷拍女厕嘘嘘 | 国产乡下妇女做爰视频 | 最近国语视频在线观看免费播放 | 国产精品一区免费 | 日本午夜大片 | 成人av一区二区三区在线观看 |