乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Selenium Webdriver定位頁(yè)面元素的幾種方式

       Go_Ahead 2015-09-15
             對(duì)于有點(diǎn)開(kāi)發(fā)經(jīng)驗(yàn)的人來(lái)說(shuō)學(xué)習(xí)這個(gè)定位其實(shí)相對(duì)容易很多,只要你寫(xiě)過(guò)前端js方面的代碼,基本上selenium webdriver的元素定位方式一看就懂,當(dāng)然也有幾個(gè)需要特別注意(如By.xpath/),需要深入的去了解一些,畢竟在實(shí)際使用中還是挺頻繁的,下面依照常用->不常用的順序介紹selenium webdriver定位元素的幾種方式:
      下圖是通過(guò)firebug調(diào)試定位到的百度搜索框:
       

      1.By.id

      2.By.name
      同樣,將控件所對(duì)應(yīng)的name屬性找到即可
       
      3.By.xpath
      這個(gè)方法非常重要,會(huì)經(jīng)常使用到,使用這種方式幾乎可以定位到任意頁(yè)面上的元素。如圖所示,將用xpath(頁(yè)面中元素的路徑)來(lái)定位我們需要用到的元素
       
       該圖所對(duì)應(yīng)的頁(yè)面上的標(biāo)簽: 
      通過(guò)路徑來(lái)定位控件,分為:絕對(duì)路徑、相對(duì)路徑(這個(gè)概念對(duì)應(yīng)做過(guò)開(kāi)發(fā)的人來(lái)說(shuō)非常熟悉,不錯(cuò)與我們開(kāi)發(fā)中的絕對(duì)路徑相對(duì)路徑非常相似),那么通過(guò)selenium webdriver的xpath方式定位元素需要注意:
      a.絕對(duì)路徑以 "/" 表示,相對(duì)路徑以 "//" 表示
      -- 當(dāng)xpath路徑以 "/" 開(kāi)頭時(shí),表示從頁(yè)面的根節(jié)點(diǎn)開(kāi)始解析;當(dāng)"/"出現(xiàn)在xpath路徑中時(shí),表示     尋找父節(jié)點(diǎn)的直接子節(jié)點(diǎn)。
      -- 當(dāng)xpath路徑以 "//" 開(kāi)頭時(shí),表示從頁(yè)面上任意符合的元素節(jié)點(diǎn)開(kāi)始解析;當(dāng)"//"出現(xiàn)在xpath路徑中時(shí),表示尋找父節(jié)點(diǎn)下任意符合條件的子節(jié)點(diǎn)。
      弄清楚它們各表示什么意思以后,就可以在實(shí)際應(yīng)用中絕對(duì)路徑相對(duì)路徑混合使用。
      下面是相對(duì)路徑引用寫(xiě)法:
      查找頁(yè)面根元素://
      查找頁(yè)面上所有的input元素://input
      查找頁(yè)面上第一個(gè)form元素://form[1]
      查找頁(yè)面上第一個(gè)form元素內(nèi)的直接input(即第一個(gè)input控件)元素://form[1]/input
      查找頁(yè)面上第一個(gè)form元素內(nèi)所有的input元素(只要在form元素內(nèi)的input都算,不管嵌套了多少個(gè)其它標(biāo)簽,此時(shí)可使用相對(duì)路徑"//")://form[1]//input
      查找頁(yè)面上id為loginForm的form元素://form[@id='loginForm']
      查找頁(yè)面上id為loginForm的form元素下第一個(gè)input元素://form[@id='loginForm']/input
      查找頁(yè)面上id為loginForm的form元素下第4個(gè)input元素://form[@id='loginForm']/input[4]
      查找頁(yè)面上name屬性為username的input元素://input[@name='username']
      查找頁(yè)面上name屬性為contiune且type屬性為button的input元素://input[@name='contiune'][@type='button']

      4.By.tagName
      通過(guò)元素的標(biāo)簽名稱來(lái)查找元素.該方法與By.id、By.name不同,通常By.tagName查詢出來(lái)的元素不止一個(gè),可能會(huì)有多個(gè),所以,使用該方法時(shí)會(huì)結(jié)合findElements來(lái)用,如下:
      List<WebElement> inputElements = driver.findElements(By.tagName("input"));
      for (WebElement input : inputElements) {
      if(input.getAttribute("type").equals("text")){
      System.out.println(input.getText());
      }
      }
      在頁(yè)面中,使用input標(biāo)簽的有:文本框/單選框/復(fù)選框/下拉框/密碼框...,只有type屬性不同

      5.By.className
      利用元素的css樣式來(lái)查找元素.如下頁(yè)面代碼,通過(guò)className來(lái)查找對(duì)應(yīng)的<p>標(biāo)簽
       WebElement element = driver.findElement(By.className("bmi_info"));
      在我學(xué)習(xí)的過(guò)程中,結(jié)合tagName,className來(lái)獲取BMI的值,如下:
      先獲得className為"bmi_info"的<p>元素,該元素內(nèi)僅有一個(gè)span,這時(shí)就可以通過(guò)tagName獲得該span,代碼如下:
      WebElement bmiElement = driver.findElement(By.className("bmi_info")).findElement(By.tagName("span"));
      String actualBMI = bmiElement.getText();

      6.By.cssSelector

      cssSelector這種元素定位方式跟xpath比較類似,但執(zhí)行速度較快,而且各種瀏覽器對(duì)它的支持都相當(dāng)?shù)轿?,所以功能也是蠻強(qiáng)大的。

      下面是一些常見(jiàn)的cssSelector的定位方式:

      定位id為flrs的div元素,可以寫(xiě)成:#flrs     注:相當(dāng)于xpath語(yǔ)法的//div[@id=’flrs’]

      定位id為flrs下的a元素,可以寫(xiě)成 #flrs > a  注:相當(dāng)于xpath語(yǔ)法的//div[@id=’flrs’]/a

      定位id為flrs下的href屬性值為/forexample/about.html的元素,可以寫(xiě)成: #flrs > a[href=”/forexample/about.html”]

      如果需要指定多個(gè)屬性值時(shí),可以逐一加在后面,如#flrs > input[name=”username”][type=”text”]。


      7. By.linkText()
      通過(guò)超文本鏈接上的文字信息來(lái)定位元素,這種方式一般專門(mén)用于定位頁(yè)面上的超文本鏈接
      WebElement linkElement = driver.findElement(By.linkText("新聞"));

      8.By.partialLinkText()
      該方法時(shí)By.linkText的擴(kuò)展,當(dāng)你不能準(zhǔn)確知道超鏈接上的文本信息或者只想通過(guò)一些關(guān)鍵字進(jìn)行匹配時(shí),可以使用這個(gè)方法來(lái)通過(guò)部分鏈接文字進(jìn)行匹配
      WebElement linkElement = driver.findElement(By.partialLinkText("新"));













      1. 當(dāng)頁(yè)面元素有id屬性時(shí),最好盡量用id來(lái)定位。但由于現(xiàn)實(shí)項(xiàng)目中很多程序員其實(shí)寫(xiě)的代碼并不規(guī)范,會(huì)缺少很多標(biāo)準(zhǔn)屬性,這時(shí)就只有選擇其他定位方法。

      2. xpath很強(qiáng)悍,但定位性能不是很好,所以還是盡量少用。如果確實(shí)少數(shù)元素不好定位,可以選擇xpath或cssSelector。

      3. 當(dāng)要定位一組元素相同元素時(shí),可以考慮用tagName或name。

      4. 當(dāng)有鏈接需要定位時(shí),可以考慮linkText或partialLinkText方式。





       

        轉(zhuǎn)藏 分享 獻(xiàn)花(0

        0條評(píng)論

        發(fā)表

        請(qǐng)遵守用戶 評(píng)論公約

        類似文章 更多