selenium自動(dòng)化初級(jí)

selenium1. 介紹自動(dòng)化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. 介紹自動(dòng)化

  • web自動(dòng)化:selenium、robot framework

  • App端自動(dòng)化測試: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元素里的名稱如果用空格分隔,代表多個(gè)類名,寫其中一個(gè)就行
3.4 tag_name定位
  • 說明:

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

    • find_element_by_tag_name()

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

    • 如何獲取第二個(gè)元素?

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定位是對(duì)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獲取第二個(gè)元素(密碼框)

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

  • 方法

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

    • 路徑-定位:絕對(duì)路徑、相對(duì)路徑

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

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

        • 相對(duì)路徑以‘//’開始
    • 利用元素等級(jí)定位

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

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

      • 解決元素之間個(gè)相同屬性重名的問題://*[@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í)選擇器

      • 說明:根據(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類似功能對(duì)比

    定位方式 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)閉單個(gè)窗口)
8. quit() 關(guān)閉 --> 關(guān)閉所有WebDriver啟動(dòng)的窗口

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)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容