• Selenium-几种元素定位方式


    #识别元素并操作
    #一般有如下几种方法,其中id最为常用.这里需要注意识别元素一定要用唯一id

    1.find_element_by_id("value")

    #! /usr/bin/env python
    #coding=utf-8
    
    from selenium import webdriver
    import time
    
    url = "http://www.baidu.com"
    driver = webdriver.Firefox()
    driver.get(url)
    time.sleep(5)
    
    driver.find_element_by_id("kw").send_keys("博客园")
    #模拟表单的提交按钮操作,新版百度搜索不需要这个了,他会自动搜索,再次看出ui的维护成本很高
    #driver.find_element_by_id("kw").submit()

    2.find_element_by_name("value")

    #driver.find_element_by_name("wd").send_keys("博客园")

    3.find_element_by_class_name("value")

    #driver.find_element_by_class_name("s_ipt").send_keys("博客园")

    4.find_element_by_link_text("value')

    driver.get(url)
    driver.find_element_by_link_text("新闻").click()
    time.sleep(5)
    
    #对于超级连接比较长的可以尝试采用下面的方法,类似一种模糊匹配
    driver.find_element_by_partial_link_text("首页").click()
    time.sleep(5)

    5.#xpath神器,理论上来说,没有path定位不到的元素
    #这里使用firepath查看
    #xpath你理解为树形结构就OK,我们也可以通过类似上下级的关系来一层层定位

    #! /usr/bin/env python
    #coding=utf-8
    
    from selenium import webdriver
    import time
    
    url = "http://www.baidu.com"
    driver = webdriver.Firef
    driver.get(url)
    driver.find_element_by_xpath(".//*[@id='kw']").send_keys("博客园")
    #driver.find_element_by_id("su").submit()
    time.sleep(5)
    
    driver.find_element_by_id("kw").clear()
    time.sleep(5)
    #返回
    driver.back()
    time.sleep(5)
    #! /usr/bin/env python
    #coding=utf-8
    
    from selenium import webdriver
    import time
    
    url = "http://www.baidu.com"
    driver = webdriver.Firef
    driver.get(url)
    driver.find_element_by_xpath(".//*[@id='kw']").send_keys("博客园")
    #driver.find_element_by_id("su").submit()
    time.sleep(5)
    
    driver.find_element_by_id("kw").clear()
    time.sleep(5)
    #返回
    driver.back()
    time.sleep(5)

    6.利用两个元素属性进行唯一定位 and or,只适用于xpath

    driver.find_element_by_xpath(".//*[@id='kw' and @name='wd']").send_keys("博客园")
    time.sleep(5)

    7.#当父类有多个一样的子类的时候,可以通过下标来定位,从1开始
    #以搜索设置里的结果显示条数为例

    driver.get("http://www.baidu.com/gaoji/preferences.html")
    time.sleep(5)
    #driver.find_element_by_xpath(".//*[@id='nr']/option[3]").click()
    #除此之外还可以怎么定位?
    driver.find_element_by_xpath(".//option[@value='50']").click()
    time.sleep(5)

    举例:

     

    解释:

    #通过id='nr'值的select元素,找到第三个input子元素
    #driver.find_element_by_xpath(".//*[@id='nr']/option[3]").click()

    #通过属性名为value且值为50的第三个option元素
    driver.find_element_by_xpath(".//option[@value='50']").click()

  • 相关阅读:
    __proto__和[[Prototype]]的区别
    JavaScript将类数组转换为数组的三种方法
    VMware报错:在该 VMware Workstation 实例中打开了最大数量的标准虚拟机。 必须在打开新的虚拟机
    bd09坐标转wgs84 JS版本 精准度高
    Layui,table,点击tool按钮获取index
    Layui扩展第三方
    Layui,table,获取当前页码数
    solidwork模型格式转为glb并且压缩
    three.js加载模型,鼠标操作模型,点击获取对象信息
    类似若依的springspringboot+vue后端框架
  • 原文地址:https://www.cnblogs.com/R-bear/p/7136842.html
Copyright © 2020-2023  润新知