zoukankan      html  css  js  c++  java
  • selenium自动化测试之元素定位一

    Selenium元素定位方法总共有八大类,分别是:id,name,class name,tag name,link text,partial link text,xpath,css。八种定位方法没有哪个是最好的,在不同的场景下需要使用不用的定位方法。

    示例html文件如下:

    <!DOCTYPE html>

    <html lang="zh-cn">

    <head>

    <meta charset="utf-8"/>

    <meta name="viewport" content="width=device-width, initial-scale=1" />

    <meta name="referrer" content="origin" />

    <title>centos7 部署openstf - ianduin - 博客园</title>

    </head>

    <body>

        <div>

        <a name="top">猜猜看</a>

           <img alt="点我试试呀" src="/images/bg.jpg">

        <div id="home">

            <div id="cnblogs_post_body" class="blogpost-body">

                         <p><span style="line-height: 1.5">openstf项目开源地址:</span></p>

                  </div>

                  <div class="highlighter-rouge">

                         <div class="newsItem">

                                <h3 class="catListTitle">公告</h3>

                                <div id="blog-news">

                                       明天也许是个好日子吧

                                </div>

                         </div>

                  </div>

            </div>

        </div>

    </body>

    </html>

    1.1 ID定位

    • 目标

    根据元素ID找到“明天也许是个好日子吧”所属的元素

    • 实现

    element1 = driver.find_element_by_id(“blog-news”)

    element2 = driver.find_element(by=”id”, value=”blog-news”)

    • 说明

    当前ID没有重复值,所有可以直接用find_element***定位元素,如果ID存在重复则在运行的时候会找不到元素,此时需要使用find_elements***,假设blog-news存在重复值,则定位方式如下:

    element3 = driver.find_elements_by_id(“blog-news”)

    element4 = driver.find_elements(by=”id”, value=”blog-news”)

    使用driver.find_element(by=by, value=value)方式定位时,by传入的是定位方式,by在selenium.webdriver.common.by.By类中,各种定位方式对应关系如下:

    CLASS_NAME = 'class name'

    CSS_SELECTOR = 'css selector'

    ID = 'id'LINK_TEXT = 'link text'

    NAME = 'name'

    PARTIAL_LINK_TEXT = 'partial link text'

    TAG_NAME = 'tag name'

    XPATH = 'xpath'

    1.2 Class定位

    • 目标

    查找含有highlighter-rouge类的元素

    • 实现

    element1 = driver.find_element_by_class_name(“highlighter-rouge”)

    element2 = driver.find_element(by=”class name”, value=”highlighter-rouge”)

    • 说明

    当前class name没有重复值,所有可以直接用find_element***定位元素,如果class存在重复则在运行的时候会找不到元素,此时需要使用find_elements***,假设highlighter-rouge存在重复值,则定位方式如下:

    element3 = driver.find_elements_by_class_name(“highlighter-rouge”)

    element4 = driver.find_elements(by=”class name”, value=”highlighter-rouge”)

    另外class在实际项目中经常都是以组合的方式出现,但是find_element_by_class_name()只能是定位单各class name,复合class name的时候需要使用css或者使用xpath定位方式

    1.3 Name定位

    • 目标

    查找name值为top的元素

    • 实现

    element1 = driver.find_element_by_name(“top”)

    element2 = driver.find_element(by=”name”, value=”top”)

    • 说明

    当前name没有重复值,所有可以直接用find_element***定位元素,如果name存在重复则在运行的时候会找不到元素,此时需要使用find_elements***,假设top存在重复值,则定位方式如下:

    element3 = driver.find_elements_by_class_name(“top”)

    element4 = driver.find_elements(by=”class name”, value=”top”)

    1.4 标签(tag name)定位

    tag name即标签名称,如:a、input、button、img等

    • 目标

    查找页面中的a标签

    • 实现

    element1 = driver. find_element_by_tag_name(“a”)

    element2 = driver. find_element(by=”tag name”, value=”a”)

    • 说明

    当前标签没有重复值,所有可以直接用find_element***定位元素,如果name存在重复则在运行的时候会找不到元素,此时需要使用find_elements***,假设a存在重复值,则定位方式如下:

    element3 = driver.find_elements_by_class_name(“a”)

    element4 = driver.find_elements(by=”class name”, value=”a”)

    1.5 超链接文本(Link text)定位

    • 目标

    查找页面中的a标签

    • 实现

    element1 = driver. find_element_by_link_text(“猜猜看”)

    element2 = driver. find_element(by=”tag name”, value=”猜猜看”)

    • 说明

    当前标签没有重复值,所有可以直接用find_element***定位元素,如果name存在重复则在运行的时候会找不到元素,此时需要使用find_elements***,假设“猜猜看”存在重复值,则定位方式如下:

    element3 = driver.find_elements_by_class_name(“猜猜看”)

    element4 = driver.find_elements(by=”class name”, value=”猜猜看”)

    1.6 超链接模糊定位(partial link text)

    • 目标

    查找页面中的a标签

    • 实现

    element1 = driver. find_element_by_link_text(“猜猜看”)

    element2 = driver. find_element(by=”tag name”, value=”猜猜看”)

    • 说明

    当前标签没有重复值,所有可以直接用find_element***定位元素,如果name存在重复则在运行的时候会找不到元素,此时需要使用find_elements***,假设“猜猜看”存在重复值,则定位方式如下:

    element3 = driver.find_elements_by_class_name(“猜猜看”)

    element4 = driver.find_elements(by=”class name”, value=”猜猜看”)

    关注公众号获取更多内容

     

  • 相关阅读:
    winform窗体扁平化设置,窗体移动,关闭
    WPF按钮控件模板
    C#连接Sqlite报错:{"试图加载格式不正确的程序。 (异常来自 HRESULT:0x8007000B)"}
    C#SQLite使用教程笔记
    C#自定义控件导航菜单(自定义事件,属性)
    LCS局域网屏幕监控系统安装指导
    System.Data.SQLite.dll 未安装或者版本冲突,按下面步骤操作即可 1、从Nuget卸载所有项目的System.Data.SQLite.dll 和SqlSugar,检查引用中是否还存在,存在直接删掉引用,然后Nuget重新安装即可
    C#项目脱落NuGet
    JavaScript跨域总结与解决办法
    回流与重绘:CSS性能让JavaScript变慢?
  • 原文地址:https://www.cnblogs.com/ianduin/p/12684425.html
Copyright © 2011-2022 走看看