selenium自動化初級

selenium1. 介紹自動化2. selenium環(huán)境搭建3. WebDriver元素定位3.1 id定位3.2 name定位3.3 class_name定位3.4 tag_name定位3.5 link_text定位3.6 partial_link_text定位3.7 find_element[s]_by_XXX()3.8 Xpath定位3.9 CSS定位4. 元素操作4.1 常用操作4.2 瀏覽器常用方法4.3 WebDriver其它常用方法

selenium

1. 介紹自動化

  • web自動化:selenium驮捍、robot framework

  • App端自動化測試:Appium、Monkey

  • 接口:Jmeter淋样、Postman惦积、httpUnit、RESTClient

2. selenium環(huán)境搭建

  • python:下載python安裝

  • 下載WebDriver筹吐,可以去淘寶鏡像下載糖耸,最好安裝在python目錄下,不需要單獨(dú)配置環(huán)境變量

  • pip install selenium

3. WebDriver元素定位

  • 定位方式8種:

    1). id丘薛、name嘉竟、class_name:為元素屬性定位
    2). tag_name:為元素標(biāo)簽名稱
    3). link_text、partial_link_text:為超鏈接定位(a標(biāo)簽)
    4). Xpath:為元素路徑定位
    5). Css:為CSS選擇器定位

  • Webdriver代碼格式:

    from selenium import webdriver # 導(dǎo)入庫
    driver = web driver.Chrome() # 打開瀏覽器
    driver.get('url') # 填寫http地址
    driver.find_element_by_id("").send_keys("") # 做操作
    driver.close() # 關(guān)閉當(dāng)前頁
    driver.quit() # 關(guān)閉瀏覽器

3.1 id定位
  • 說明:

    • id屬性在HTML文檔種必須是唯一的
  • 方式:

    • find_element_by_id()
3.2 name定位
  • 說明:

    • HTML規(guī)定name屬性來指定元素名稱洋侨,因此它的作用更像人名舍扰,name的屬性值在當(dāng)前文檔中可以不是唯一的
  • 定位方法:

    • find_element_by_name()
3.3 class_name定位
  • 說明:

    • HTML規(guī)定了class來指定元素的類名,用法和name希坚、id類似边苹;
  • 定位方法:

    • find_element_by_class_name()
  • 注意:

    • HTML的class元素里的名稱如果用空格分隔,代表多個類名裁僧,寫其中一個就行
3.4 tag_name定位
  • 說明:

    • HTML本質(zhì)就是由不同的tag(標(biāo)簽)組成个束,而每個tag都是指同一類慕购,所以tag定位效率低,
      一般不建議使用播急;tag_name定位就是通過標(biāo)簽名來定位脓钾;
  • 定位方法:

    • find_element_by_tag_name()

      返回的符合條件的第一個標(biāo)簽

    • 如何獲取第二個元素?

3.5 link_text定位
  • 說明:

    • 專門定位超鏈接文本(<a>標(biāo)簽</a>)
  • 方法:

    • find_element_by_link_text()

      需要傳入a標(biāo)簽全部文本

      定位后可以通過 .click() 來進(jìn)行點(diǎn)擊操作

3.6 partial_link_text定位
  • 說明:

    • partial_link_text定位是對link_text定位的補(bǔ)充桩警,partial_like_text為模糊匹配可训;link_text全部匹配
  • 方法:

    • find_element_by_partial_link_text()

      傳入a標(biāo)簽局部文本

3.7 find_element[s]_by_XXX()
  • element加了s

  • 作用:

    • 1. 查找定位所有符合條件的元素
      2. 返回的定位元素格式為數(shù)組(列表)格式;
      說明:
      2.1 列表數(shù)據(jù)格式的讀取需要指定下標(biāo)(下標(biāo)從0開始)
  • 例子

    • 使用tag_name獲取第二個元素(密碼框)

      driver.find_elements_by_tag_name("input")[1].send_keys("123456")
3.8 Xpath定位
  • Xpath和CSS定位可以解決捶枢,項(xiàng)目中沒有id握截、name、class屬性烂叔,或者id谨胞、name、class屬性值為動態(tài)獲取蒜鸡,隨著刷新或加載而變化

  • 方法

    • driver.find_element_by_xpath()
  • Xpath定位方式

    • 路徑-定位:絕對路徑胯努、相對路徑

      • 絕對路徑:從最外層元素到指定元素之間所有經(jīng)過元素層級路徑

        • 絕對路徑以 ‘/’開始
      • 相對路徑:從第一個符合條件元素開始(一般配合屬性來區(qū)分)

        • 相對路徑以‘//’開始
    • 利用元素等級定位

      • 利用元素的唯一屬性定位 ://*[@id='userA']
    • 層級與屬性結(jié)合

      • 要找的元素沒有屬性,但是它的父級有://*[@id='p1']/input
    • 屬性與邏輯結(jié)合

      • 解決元素之間個相同屬性重名的問題://*[@id='telA' and @class='telA']
    • //[text()="xxx"] 文本內(nèi)容是xxx的元素
      //
      [starts-with(@attribute,'xxx')] 屬性以xxx開頭的元素
      //*[contains(@attribute,'Sxxx')] 屬性中含有xxx的元素

3.9 CSS定位
  • CSS定位速度Xpath要快

  • CSS定位方法

    • driver.find_element_by_css_selector()
  • 方式

    • id選擇器

      • 說明:根據(jù)元素id屬性來選擇
        格式:#id 如:#userA <選擇id屬性值為userA的所有元素>
    • class選擇器

      • 說明:根據(jù)元素class屬性來選擇
        格式:.class 如:.telA <選擇class屬性值為telA的所有元素>
    • 元素選擇器

      • 說明:根據(jù)元素的標(biāo)簽名選擇
        格式:element 如:input <選擇所有input元素>
    • 屬性選擇器

      • 說明:根據(jù)元素的屬性名和值來選擇
        格式:[attribute=value] 如:[type="password"] <選擇所有type屬性值為password的值>
    • 層級選擇器

      • 說明:根據(jù)元素的父子關(guān)系來選擇
        格式:element>element 如:p>input <返回所有p元素下所有的input元素>
        提示:> 可以用空格代替 如:p input 或者 p [type='password']
    • 1. input[type^='p'] 說明:type屬性以p字母開頭的元素
      2. input[type$='d'] 說明:type屬性以d字母結(jié)束的元素
      3. input[type*='w'] 說明:type屬性包含w字母的元素

  • CSS功能

  • 選擇器 例子 描述
    #id #userA id選擇器逢防,選擇id="userA"的所有元素
    .class .telA class選擇器叶沛,選擇class="telA"的所有元素
    element input 選擇所有input元素
    [attribute=value] [type="password"] 選擇type="password"的所有元素
    element>element p>input 選擇所有父元素為p元素的input元素
  • XPath與CSS類似功能對比

    定位方式 XPath CSS
    元素名 //input input
    id //input[@id='userA'] #userA
    class //*[@class='telA'] .telA
    屬性 1. //※[text()="xxx"] 2. //※[starts-with(@attribute,'xxx')] 3. //※[contains(@attribute,'xxx')] 1. input[type^='p'] 2. input[type$='d'] 3. input[type*='w']

4. 元素操作

4.1 常用操作
  • clear():清除文本 一般清除input輸入的值

  • send_keys:模擬輸入

  • click():單擊元素

4.2 瀏覽器常用方法

1. maximize_window() 最大化 --> 模擬瀏覽器最大化按鈕
2. set_window_size(100,100) 瀏覽器大小 --> 設(shè)置瀏覽器寬、高(像素點(diǎn))
3. set_window_position(300,200) 瀏覽器位置 --> 設(shè)置瀏覽器位置
4. back() 后退 --> 模擬瀏覽器后退按鈕
5. forward() 前進(jìn) --> 模擬瀏覽器前進(jìn)按鈕
6. refresh() 刷新 --> 模擬瀏覽器F5刷新
7. close() 關(guān)閉 --> 模擬瀏覽器關(guān)閉按鈕(關(guān)閉單個窗口)
8. quit() 關(guān)閉 --> 關(guān)閉所有WebDriver啟動的窗口

4.3 WebDriver其它常用方法

1. size 返回元素大小
2. text 獲取元素的文本
3. title 獲取頁面title
4. current_url 獲取當(dāng)前頁面URL
5. get_attribute() 獲取屬性值
6. is_display() 判斷元素是否可見
7. is_enabled() 判斷元素是否可用

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末忘朝,一起剝皮案震驚了整個濱河市灰署,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌局嘁,老刑警劉巖溉箕,帶你破解...
    沈念sama閱讀 217,657評論 6 505
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異悦昵,居然都是意外死亡肴茄,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,889評論 3 394
  • 文/潘曉璐 我一進(jìn)店門但指,熙熙樓的掌柜王于貴愁眉苦臉地迎上來寡痰,“玉大人,你說我怎么就攤上這事枚赡。” “怎么了谓谦?”我有些...
    開封第一講書人閱讀 164,057評論 0 354
  • 文/不壞的土叔 我叫張陵贫橙,是天一觀的道長。 經(jīng)常有香客問我反粥,道長卢肃,這世上最難降的妖魔是什么疲迂? 我笑而不...
    開封第一講書人閱讀 58,509評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮莫湘,結(jié)果婚禮上尤蒿,老公的妹妹穿的比我還像新娘。我一直安慰自己幅垮,他們只是感情好腰池,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,562評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著忙芒,像睡著了一般示弓。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上呵萨,一...
    開封第一講書人閱讀 51,443評論 1 302
  • 那天奏属,我揣著相機(jī)與錄音,去河邊找鬼潮峦。 笑死囱皿,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的忱嘹。 我是一名探鬼主播嘱腥,決...
    沈念sama閱讀 40,251評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼德谅!你這毒婦竟也來了爹橱?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,129評論 0 276
  • 序言:老撾萬榮一對情侶失蹤窄做,失蹤者是張志新(化名)和其女友劉穎愧驱,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體椭盏,經(jīng)...
    沈念sama閱讀 45,561評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡组砚,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,779評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了掏颊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片糟红。...
    茶點(diǎn)故事閱讀 39,902評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖乌叶,靈堂內(nèi)的尸體忽然破棺而出盆偿,到底是詐尸還是另有隱情,我是刑警寧澤准浴,帶...
    沈念sama閱讀 35,621評論 5 345
  • 正文 年R本政府宣布事扭,位于F島的核電站,受9級特大地震影響乐横,放射性物質(zhì)發(fā)生泄漏求橄。R本人自食惡果不足惜今野,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,220評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望罐农。 院中可真熱鬧条霜,春花似錦、人聲如沸涵亏。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,838評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽溯乒。三九已至夹厌,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間裆悄,已是汗流浹背矛纹。 一陣腳步聲響...
    開封第一講書人閱讀 32,971評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留光稼,地道東北人或南。 一個月前我還...
    沈念sama閱讀 48,025評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像艾君,于是被迫代替她去往敵國和親采够。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,843評論 2 354