• web自动化测试常用的定位方式有哪些?



    #定位优先选择1、id 2、name
    #xpath优先选择属性定位,再选择文本定位

    from selenium import webdriver

    # 打开对应的浏览器,开启与浏览器之间的会话
    #打开的是非常干净的浏览器,没有任何的用户数据
    driver=webdriver.Chrome()

    # 元素在页面的三种状态
    # 1)存在:能够找到
    # 2)可见:在浏览器呈现的页面当中,可以看到它的大小。有高和宽。
    # 3)可用:特别关注输入框和按钮。
    # 1)>2)>3)
    driver.get("http://www.baidu.com")


    #按照元素本身的特征来找
    # 8个元素定位方式:1类:只根据元素的一个特征来找;2类:多种组合方式:xpath,css选择器
    #id,name,className,tagName,link,partial_link
    #id:固定不变,动态变化的id
    ele=driver.find_element_by_id("kw")#找元素,下一步动作:操作。返回对象:WebElement(操作+属性)
    # ele.send_keys()


    #
    #2、 tag_Name标签名称
    driver.find_element_by_tag_name("input") #得到一个webElement对象 第一个

    driver.find_elements_by_tag_name("input") #得到一个列表。所有匹配的元素,多个webElement对象

    #3、class_name class属性
    driver.find_element_by_class_name("s-top-wrap")#一个类名
    driver.find_elements_by_class_name("")


    #4、name属性
    driver.find_element_by_name("wd")
    driver.find_elements_by_name("wd")


    #5.6.只针对a标签
    driver.find_element_by_link_text("新闻")#精准匹配
    # driver.find_elements_by_link_text("")

    # driver.find_elements_by_partial_link_text()
    driver.find_element_by_partial_link_text("新")#部分文本匹配





    #7、xpath
    #页面中ctrl+f 写xpath表达式
    """
    //*[@id="kw"]
    /html/body/div[2]/div[2]/div[5]/div[1]/div/form/span[1]/input


    绝对定位:以/开头 完整路径,绝对下标位置
    相对定位:1)相对于谁?参照物 以//开头 确认:有还是没有匹配的元素?
    //标签名(一级筛选)

    靠元素自己精准定位:
    1、//标签名[@属性名称=值] 如://input[@id="kw"] 或者//*[@属性名称=值]

    2、多个属性值定位:逻辑运算and or //标签名[@属性名称=值 and @属性名称=值]


    3、文本定位:(Css不支持文本定位,只有Xpath定位有)
    //标签名[text()=文本值] 如://div[@id="u1"]//a[text()="登录"]


    4、包含定位:(Css不支持包含定位,只有Xpath定位有)
    //标签名[contains(@属性,值)]
    //标签名[contains(text(),值)] 如://h4[contains(text(),"运营")]


    靠祖宗定位:
    层级定位://div[@id="u1"]//a[@name="tj_login"]


    轴定位:
    轴运算:ancestor:祖先节点 包括父
    parent:父节点 给g
    preceding:当前元素节点标签之前的所有节点。(html页面先后顺序)
    preceding-sibling:当前元素节点标签之前的所有兄弟节点
    following:当前元素节点标签之后的所有节点。(html页面先后顺序)
    following-sibling:当前元素节点标签之后的所有兄弟节点

    使用语法:已知的元素/轴名称::标签名称[@属性=值]
    例如://div//table//td//preceding::td
    //dd[@data-val="张芝波"]/flowing-sibling::dd[contains(@class,"batscore")]/span
    较多的应用场景:
    页面显示为一个表格样式的数据列,需要通过组合来定位元素

    //p[@title="2306"]/parent::li/following-sibling::li//p[@class="name"]
    """
  • 相关阅读:
    整数反转
    两数之和
    设计模式-备忘录模式
    设计模式-迭代器模式
    设计模式-中介者模式
    设计模式-观察者模式
    C# OpenFileDialog和SaveFileDialog的常见用法
    SQL数据库表结构的修改(sql2005)
    C# 时间格式处理
    C# 集合类(四)
  • 原文地址:https://www.cnblogs.com/queenz-852/p/12364399.html
Copyright © 2020-2023  润新知