qileilove

          blog已經轉移至github,大家請訪問 http://qaseven.github.io/

          python-webdriver 開始第一個腳本

          2.1 為什么選 python
          之前的菜鳥系列是基于 java 的,一年沒學其實也忘的差不多了,目前所測的產品
          部分也是 python 寫的,而且團隊也在推廣 python ,其實就測試人員來說,python 也
          相當受歡迎。易學,易用。翻翻各測試招聘,python 出現的概率也頗高。(個人原因)
          最重要的還是 python 簡單易學,應用也相對廣泛;是測試人員學習編程的不二之選。
          下面看看 python 穿上 selenium webdriver 是多么的性感:
          2.2 第一個腳本
          # coding = utf-8
          from selenium import webdriver
          browser = webdriver.Firefox()
          browser.get("http://www.baidu.com")
          browser.find_element_by_id("kw").send_keys("selenium")
          browser.find_element_by_id("su").click()
          博客園—蟲師
          http://fnng.cnblogs.com
          10
          browser.quit()
          2.3 腳本解析
          # coding = utf-8
          可加可不加,開發人員喜歡加一下,防止亂碼嘛。
          from selenium import webdriver
          要想使用 selenium 的 webdriver 里的函數,首先把包導進來嘛
          browser = webdriver.Firefox()
          我們需要操控哪個瀏覽器呢?Firefox ,當然也可以換成 Ie 或 Chrome 。browser 可以
          隨便取,但后面要用它操縱各種函數執行。
          browser.find_element_by_id("kw").send_keys("selenium")
          一個控件有若干屬性 id 、name、(也可以用其它方式定位),百度輸入框的 id 叫 kw ,
          我要在輸入框里輸入 selenium 。多自然語言呀!
          browser.find_element_by_id("su").click()
          搜索的按鈕的 id 叫 su ,我需要點一下按鈕( click() )。
          browser.quit()
          退出并關閉窗口的每一個相關的驅動程序,有潔癖用這個。
          browser.close()
          關閉當前窗口 ,用哪個看你的需求了。
          博客園—蟲師
          http://fnng.cnblogs.com
          11
          三、元素的定位
          對象的定位應該是自動化測試的核心,要想操作一個對象,首先應該識別這個對象。
          一個對象就是一個人一樣,他會有各種的特征(屬性),如比我們可以通過一個人的身
          份證號,姓名,或者他住在哪個街道、樓層、門牌找到這個人。
          那么一個對象也有類似的屬性,我們可以通過這個屬性找到這對象。
          webdriver 提供了一系列的對象定位方法,常用的有以下幾種
          ?
          · id
          ?
          · name
          ?
          · class name
          ?
          · link text
          ?
          · partial link text
          ?
          · tag name
          ?
          · xpath
          ?
          · css selector
          我們可以看到,一個百度的輸入框,可以用這么用種方式去定位。
          <input
          id="kw"
          class="s_ipt"
          type="text"
          maxlength="100"
          name="wd"
          autocomplete="off">
          #coding=utf-8
          from selenium import webdriver
          browser = webdriver.Firefox()
          browser.get("http://www.baidu.com")
          #########百度輸入框的定位方式##########
          #通過 id 方式定位
          browser.find_element_by_id("kw").send_keys("selenium")
          #通過 name 方式定位
          browser.find_element_by_name("wd").send_keys("selenium")
          #通過 tag name 方式定位
          browser.find_element_by_tag_name("input").send_keys("selenium")
          #通過 class name 方式定位
          browser.find_element_by_class_name("s_ipt").send_keys("selenium")
          博客園—蟲師
          http://fnng.cnblogs.com
          12
          #通過 CSS 方式定位
          browser.find_element_by_css_selector("#kw").send_keys("selenium")
          #通過 xphan 方式定位
          browser.find_element_by_xpath("http://input[@id='kw']").send_keys("selenium")
          ############################################
          browser.find_element_by_id("su").click()
          time.sleep(3)
          browser.quit()
          3.1
          id 和 name 定位
          id 和 name 是我們最最常用的定位方式,因為大多數控件都有這兩個屬性,而且
          在對控件的 id 和 name 命名時一般使其有意義也會取不同的名字。通過這兩個屬性使我
          們找一個頁面上的屬性變得相當容易
          我們通過前端工具,找到了百度輸入框的屬性信息,如下:
          <input
          id="kw"
          class="s_ipt"
          type="text"
          maxlength="100"
          name="wd"
          autocomplete="off">
          id=”kw”
          通過 find_element_by_id("kw") 函數就是捕獲到百度輸入框
          name=”wd”
          通過 find_element_by_name("wd")函數同樣也可以捕獲百度輸入框
          3.2
          tag name 和 class name 定位
          從上面的百度輸入框的屬性信息中,我們看到,不單單只有 id 和 name 兩個屬性,
          比如 class 和 tag name(標簽名)
          <input
          id="kw"
          class="s_ipt"
          type="text"
          maxlength="100"
          name="wd"
          autocomplete="off">
          <input>
          博客園—蟲師
          http://fnng.cnblogs.com
          13
          input 就是一個標簽的名字

          3.4
          XPath 定位
          什么是 XPath:http://www.w3.org/TR/xpath/
          XPath 基礎教程:http://www.w3schools.com/xpath/default.asp
          selenium 中被誤解的 XPath : http://magustest.com/blog/category/webdriver/
          XPath 是一種在 XML 文檔中定位元素的語言。因為 HTML 可以看做 XML 的一種實現,
          所以 selenium 用戶可是使用這種強大語言在 web 應用中定位元素。
          XPath 擴展了上面 id 和 name 定位方式,提供了很多種可能性,比如定位頁面上的
          第三個多選框。
          xpath:attributer (屬性)
          driver.find_element_by_xpath("http://input[@id='kw']").send_keys("selenium")
          #input 標簽下 id =kw 的元素
          xpath:idRelative (id 相關性)
          driver.find_element_by_xpath("http://div[@id='fm']/form/span/input").send_keys("s
          elenium")
          #在/form/span/input 層級標簽下有個 div 標簽的 id=fm 的元素
          driver.find_element_by_xpath("http://tr[@id='check']/td[2]").click()
          # id 為'check' 的 tr ,定位它里面的第2個 td
          xpath:position (位置)
          driver.find_element_by_xpath("http://input").send_keys("selenium")
          driver.find_element_by_xpath("http://tr[7]/td[2]").click()
          #第7個 tr 里面的第2個 td
          xpath: href (水平參考)
          driver.find_element_by_xpath("http://a[contains(text(),'網頁')]").click()
          #在 a 標簽下有個文本(text)包含(contains)'網頁' 的元素
          xpath:link
          driver.find_element_by_xpath("http://a[@).click()
          #有個叫 a 的標簽,他有個鏈接 href='http://www.baidu.com/ 的元素
          博客園—蟲師
          http://fnng.cnblogs.com
          15
          3.5
          link 定位
          有時候不是一個輸入框也不是一個按鈕,而是一個文字鏈接,我們可以通過 link
          #coding=utf-8
          from selenium import webdriver
          browser = webdriver.Firefox()
          browser.get("http://www.baidu.com")
          browser.find_element_by_link_text("貼 吧").click()
          browser.quit()
          一般一個頁面上不會出現相同的文件鏈接,通過文字鏈接來定位也是一種簡單有效
          的定位方式。
          3.6
          Partial link text 定位
          通過部分鏈接定位,這個有時候也會用到,我還沒有想到很好的用處。拿上面的例
          子,我可以只用鏈接的一部分文字進行匹配:
          browser.find_element_by_partial_link_text("貼").click()
          #通過 find_element_by_partial_link_text() 函數,我只用了“貼”字,腳本一樣找到了"貼 吧
          " 的鏈接

          posted on 2014-04-10 15:16 順其自然EVO 閱讀(508) 評論(0)  編輯  收藏 所屬分類: 自動化測試python

          <2025年7月>
          293012345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          導航

          統計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 密山市| 恩平市| 区。| 宁城县| 墨竹工卡县| 资阳市| 新沂市| 万源市| 富锦市| 大庆市| 海阳市| 竹山县| 临沭县| 漳州市| 湖北省| 溧阳市| 齐齐哈尔市| 新昌县| 双城市| 平凉市| 连南| 宜良县| 宜丰县| 台南县| 仁化县| 武夷山市| 和田县| 修水县| 华宁县| 东丽区| 阜阳市| 习水县| 乌鲁木齐县| 奇台县| 鄂托克旗| 古丈县| 正安县| 平昌县| 贵州省| 武汉市| 鄢陵县|