qileilove

          blog已經(jīng)轉(zhuǎn)移至github,大家請訪問 http://qaseven.github.io/

          python-webdriver 開始第一個腳本

          2.1 為什么選 python
          之前的菜鳥系列是基于 java 的,一年沒學(xué)其實也忘的差不多了,目前所測的產(chǎn)品
          部分也是 python 寫的,而且團隊也在推廣 python ,其實就測試人員來說,python 也
          相當(dāng)受歡迎。易學(xué),易用。翻翻各測試招聘,python 出現(xiàn)的概率也頗高。(個人原因)
          最重要的還是 python 簡單易學(xué),應(yīng)用也相對廣泛;是測試人員學(xué)習(xí)編程的不二之選。
          下面看看 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
          可加可不加,開發(fā)人員喜歡加一下,防止亂碼嘛。
          from selenium import webdriver
          要想使用 selenium 的 webdriver 里的函數(shù),首先把包導(dǎo)進來嘛
          browser = webdriver.Firefox()
          我們需要操控哪個瀏覽器呢?Firefox ,當(dāng)然也可以換成 Ie 或 Chrome 。browser 可以
          隨便取,但后面要用它操縱各種函數(shù)執(zhí)行。
          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()
          退出并關(guān)閉窗口的每一個相關(guān)的驅(qū)動程序,有潔癖用這個。
          browser.close()
          關(guān)閉當(dāng)前窗口 ,用哪個看你的需求了。
          博客園—蟲師
          http://fnng.cnblogs.com
          11
          三、元素的定位
          對象的定位應(yīng)該是自動化測試的核心,要想操作一個對象,首先應(yīng)該識別這個對象。
          一個對象就是一個人一樣,他會有各種的特征(屬性),如比我們可以通過一個人的身
          份證號,姓名,或者他住在哪個街道、樓層、門牌找到這個人。
          那么一個對象也有類似的屬性,我們可以通過這個屬性找到這對象。
          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 是我們最最常用的定位方式,因為大多數(shù)控件都有這兩個屬性,而且
          在對控件的 id 和 name 命名時一般使其有意義也會取不同的名字。通過這兩個屬性使我
          們找一個頁面上的屬性變得相當(dāng)容易
          我們通過前端工具,找到了百度輸入框的屬性信息,如下:
          <input
          id="kw"
          class="s_ipt"
          type="text"
          maxlength="100"
          name="wd"
          autocomplete="off">
          id=”kw”
          通過 find_element_by_id("kw") 函數(shù)就是捕獲到百度輸入框
          name=”wd”
          通過 find_element_by_name("wd")函數(shù)同樣也可以捕獲百度輸入框
          3.2
          tag name 和 class name 定位
          從上面的百度輸入框的屬性信息中,我們看到,不單單只有 id 和 name 兩個屬性,
          比如 class 和 tag name(標(biāo)簽名)
          <input
          id="kw"
          class="s_ipt"
          type="text"
          maxlength="100"
          name="wd"
          autocomplete="off">
          <input>
          博客園—蟲師
          http://fnng.cnblogs.com
          13
          input 就是一個標(biāo)簽的名字

          3.4
          XPath 定位
          什么是 XPath:http://www.w3.org/TR/xpath/
          XPath 基礎(chǔ)教程:http://www.w3schools.com/xpath/default.asp
          selenium 中被誤解的 XPath : http://magustest.com/blog/category/webdriver/
          XPath 是一種在 XML 文檔中定位元素的語言。因為 HTML 可以看做 XML 的一種實現(xiàn),
          所以 selenium 用戶可是使用這種強大語言在 web 應(yīng)用中定位元素。
          XPath 擴展了上面 id 和 name 定位方式,提供了很多種可能性,比如定位頁面上的
          第三個多選框。
          xpath:attributer (屬性)
          driver.find_element_by_xpath("http://input[@id='kw']").send_keys("selenium")
          #input 標(biāo)簽下 id =kw 的元素
          xpath:idRelative (id 相關(guān)性)
          driver.find_element_by_xpath("http://div[@id='fm']/form/span/input").send_keys("s
          elenium")
          #在/form/span/input 層級標(biāo)簽下有個 div 標(biāo)簽的 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(),'網(wǎng)頁')]").click()
          #在 a 標(biāo)簽下有個文本(text)包含(contains)'網(wǎng)頁' 的元素
          xpath:link
          driver.find_element_by_xpath("http://a[@).click()
          #有個叫 a 的標(biāo)簽,他有個鏈接 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()
          一般一個頁面上不會出現(xiàn)相同的文件鏈接,通過文字鏈接來定位也是一種簡單有效
          的定位方式。
          3.6
          Partial link text 定位
          通過部分鏈接定位,這個有時候也會用到,我還沒有想到很好的用處。拿上面的例
          子,我可以只用鏈接的一部分文字進行匹配:
          browser.find_element_by_partial_link_text("貼").click()
          #通過 find_element_by_partial_link_text() 函數(shù),我只用了“貼”字,腳本一樣找到了"貼 吧
          " 的鏈接

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

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

          導(dǎo)航

          統(tǒng)計

          常用鏈接

          留言簿(55)

          隨筆分類

          隨筆檔案

          文章分類

          文章檔案

          搜索

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 吐鲁番市| 志丹县| 十堰市| 积石山| 万山特区| 广德县| 会同县| 岑溪市| 贵港市| 崇左市| 安陆市| 长汀县| 遂川县| 昔阳县| 乌审旗| 广灵县| 怀柔区| 个旧市| 琼结县| 沁阳市| 应用必备| 浦北县| 卓资县| 通渭县| 常德市| 临漳县| 乡城县| 开原市| 柘城县| 精河县| 托克托县| 嘉义市| 扶余县| 泗水县| 广汉市| 革吉县| 个旧市| 梁平县| 东阿县| 铅山县| 十堰市|