程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> JAVA編程 >> 關於JAVA >> java selenium元素定位年夜全

java selenium元素定位年夜全

編輯:關於JAVA

java selenium元素定位年夜全。本站提示廣大學習愛好者:(java selenium元素定位年夜全)文章只能為提供參考,不一定能成為您想要的結果。以下是java selenium元素定位年夜全正文


頁面元素定位是主動化中最主要的工作, selenium Webdriver 供給了許多種元素定位的辦法。  測試人員應當闇練控制各類定位辦法。 應用最簡略,最穩固的定位辦法。

浏覽目次

  1. 主動化測試步調
  2. 定位辦法年夜全
  3. 若何定位
  4. 經由過程ID查找元素: By.id()
  5. 經由過程Name查找元素:By.name()
  6. 經由過程TagName查找元素: By.tagName()
  7. 經由過程ClassName 查找元素 By.className
  8. 經由過程LinkText查找元素 By.linkText();
  9. 經由過程PartialLinkText 查找元素 By.partialLinkText()
  10. 經由過程CSS選擇器查找元素、
  11. 經由過程Xpath 查找元素
  12. 主動化測試步調

    在主動化測試進程中, 測試法式平日的操作頁面元素步調

    1. 找到Web的頁面元素,並付與到一個存儲對象中 (WebElement)

    2. 對存儲頁面元素的對象停止操作, 例如:點擊鏈接,在輸出框中輸出字符等

    3. 驗證頁面上的元素能否相符預期 

    經由過程這三個步調, 我們可以完成一個頁面元素的操作, 找到頁面元素是很主要的一個步調。 找不到頁面元素,前面就沒法做了

    Web頁面技巧的實際龐雜性, 形成年夜量的頁面元素很難定位。  常常有人不曉得怎樣定位。

    定位辦法年夜全

    應用WebDriver對象的findElement函數界說一個Web頁面元素

    應用findElements函數可以定位頁面的多個元素

    定位的頁面元素須要應用WebElement對象來存儲,以便後續應用

    經常使用的定位頁面元素辦法以下,   按推舉排序

     

    定位辦法

    Java說話完成實例

    id 定位

    driver.findElement(By.id(“id的值”));

    name定位

    driver.findElement(By.name(“name的值”));

    鏈接的全體文字定位

    driver.findElement(By.linkText(“鏈接的全體文字”));

    鏈接的部門文字定位

    driver.findElement(By.partialLinkText(“鏈接的部門文字”));

    css 方法定位

    driver.findElement(By.cssSelector(“css表達式”));

    xpath 方法定位

    driver.findElement(By.xpath(“xpath表達式”));

    Class 稱號定位

    driver.findElement(By.className(“class屬性”));

    TagName 標簽稱號定位

    driver.findElement(By.tagName(“標簽稱號”));

    Jquery方法

    Js.executeScript(“return jQuery.find(“jquery表達式”)”)

     若何定位

    在應用selenium webdriver停止元素定位時,平日應用findElement或findElements辦法聯合By類前往元素句柄來定位元素

    findElement() 辦法前往一個元素, 假如沒有找到,會拋出一個異常 NoElementFindException()

    findElements()辦法前往多個元素, 假如沒有找到,會前往空數組, 不會拋出異常

    若何選擇 定位辦法

    戰略是, 選擇簡略,穩固的定位辦法。

    1. 當頁面元素有id屬性的時刻, 盡可能應用id來定位。  沒有的話,再選擇其他定位辦法

    2. cssSelector  履行速度快, 推舉應用

    3. 定位超鏈接的時刻,可以斟酌linkText或partialLinkText: 然則要留意的是 ,  文本常常產生轉變, 所以不推舉用

    4. xpath 功效最強悍。 其時履行速度慢,由於須要查找全部DOM,  所以盡可能罕用。  其實沒有方法的時刻,才應用xpath

    經由過程ID查找元素: By.id()

    經由過程頁面元素的ID來查找元素是最為推舉的方法, W3C尺度推舉開辟人員為每個頁面元素都供給舉世無雙的ID屬性

    一旦元素被付與了獨一的ID屬性.,  我們做主動化測試的時刻,很輕易定位到元素.  元素的ID被作為首選的辨認屬性, 由於是最快的辨認戰略. 

    以百度主頁為例,  搜刮框的HTML示例代碼以下,   它的ID為kw

    <input type="text" autocomplete="off" maxlength="100" id="kw" name="wd" class="s_ipt">

    "百度一下"搜刮按鈕元素的HTML示例代碼以下,   它ID為su

    <input type="submit" class="btn self-btn bg s_btn" id="su" value="百度一下">

    在Selenium/WebDriver 中經由過程ID查找元素的Java示例代碼以下

    WebDriver driver = new FirefoxDriver();
      driver.get("http://www.百度.com");
       
      WebElement searchBox = driver.findElement(By.id("kw"));
      searchBox.sendKeys("小坦克 博客園");
      WebElement searchButton = driver.findElement(By.id("su"));
      searchButton.submit();
      
      driver.close();

     經由過程Name查找元素:By.name()

    以豆瓣網的主頁搜刮框為例, 其搜刮框的HTML代碼以下,  它name是: q

    <input type="text" autocomplete="off" name="q" placeholder="書本、片子、音樂、小組、小站、成員" size="12" maxlength="60">

     WebDriver中經由過程name查找豆瓣主頁上的搜刮框的Java代碼以下:

     WebDriver driver = new FirefoxDriver();
      driver.get("http://www.douban.com");
       
      WebElement searchBox = driver.findElement(By.name("q"));
      searchBox.sendKeys("小坦克");
      searchBox.submit();
     
    

     經由過程TagName查找元素: By.tagName()

    經由過程tagName來搜刮元素的時刻,會前往多個元素. 是以須要應用findElements()

     WebDriver driver = new FirefoxDriver();
      driver.get("http://www.cnblogs.com");
       
      List<WebElement> buttons = driver.findElements(By.tagName("div"));
      System.out.println("Button:" + buttons.size());

    留意:  假如應用tagName,  要留意許多HTML元素的tagName是雷同的,

    好比單選框,復選框, 文本框,暗碼框.這些元素標簽都是input.  此時單靠tagName沒法准確獲得我們想要的元素, 還須要聯合type屬性,能力過濾出我們要的元素

    WebDriver driver = new FirefoxDriver();
      driver.get("http://www.cnblogs.com");
       
      List<WebElement> buttons = driver.findElements(By.tagName("input"));
      for (WebElement webElement : buttons) {
       if (webElement.getAttribute("type").equals("text")) {
        System.out.println("input text is :" + webElement.getText());
       }
      }

    經由過程ClassName 查找元素 By.className 

    以淘寶網的主頁搜刮為例, 其搜刮框的HTML代碼以下:   class="search-combobox-input"

    <input autocomplete="off" autofocus="true" accesskey="s" aria-label="請輸出搜刮文字" name="q" id="q" class="search-combobox-input" aria-haspopup="true" aria-combobox="list" role="combobox" x-webkit-grammar="builtin:translate" tabindex="0">

    Java 示例代碼以下

      WebDriver driver = new FirefoxDriver();
      driver.get("http://www.taobao.com");
      Thread.sleep(15000);
      WebElement searchBox = driver.findElement(By.className("search-combobox-input"));
    
      searchBox.sendKeys("羽絨服");
      searchBox.submit();

    留意:應用className 來停止元素定位時, 有時會碰著一個

    經由過程LinkText查找元素 By.linkText();

     直接經由過程超鏈接上的文字信息來定位元素:例如

    <a href="https://passport.百度.com/v2/?login&tpl=mn&u=http%3A%2F%2Fwww.百度.com%2F" name="tj_login" class="lb" onclick="return false;">登錄</a>
     
    
    

    HTML代碼以下

     WebDriver driver = new FirefoxDriver();
      driver.get("http://www.百度.com");
      WebElement loginLink = driver.findElement(By.linkText("登錄"));
      loginLink.click();

    經由過程PartialLinkText 查找元素 By.partialLinkText()

    此辦法是上一個辦法的增強版, 單你只想用一些症結字婚配的時刻,可使用這個辦法,經由過程部門超鏈接文字來定位元素

    HTML 代碼以下

      WebDriver driver = new FirefoxDriver();
      driver.get("http://www.百度.com");
      WebElement loginLink = driver.findElement(By.partialLinkText("登"));
      loginLink.click();

     留意:用這類辦法定位時, 能夠會惹起的成績是, 當你的頁面中不知一個超鏈接包括“等”時, findElement辦法只會前往第一個查找到的元素,而不會前往一切相符前提的元素

    假如你想要取得一切相符前提的元素,照樣只能用findElements辦法。

    以上就是java selenium元素定位 的材料整頓,後續持續彌補相干材料,感謝年夜家的支撐!

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved