• selenium的元素定位


    所谓定位,就是要找到位置。比如生活中常见的GPS定位,就是要找到目标位置所在的经纬度

    那我们这里所说的定位,是要找到一个元素在网页上的位置。因为selenium可以驱动浏览器,通过定位规则找到目标对象的位置,从而来操作这个元素。比方说 我们现在要对这个输入框写入一个test,来测试输入框的功能,那必然要找到这个网页上输入框位置在哪里,然后再写入。

    这里我们整理一些常用的定位方式

    以百度首页为例

    driver = webdriver.Chrome()
    driver.get("https://www.baidu.com")


    方式一:通过ID来定位,ID是不会变的,就比如我们要找这条街上的***,那他的身份证就是一个唯一的ID,找到这个ID就好了
    driver.find_element_by_id('kw')

    方式二:通过name来定位,name可能会重名,比如要找某某村的小红,可能这个村里叫小红的就有3个呢,
    如果我只需要找一个叫小红的,写法:
    driver.find_element_by_name('wd')

    如果我要把这些叫小红的都找出来,写法:
    driver.find_elements_by_name('wd')

    方式三:通过tag_name来定位,tag_name也可能会重名,因为一个标签可能会搜索出好几个。比如现在要找某某村的所有小孩,这个小孩就是一个标签。这样形容
    似乎不是很合理。那我们一个html网页,无非就是输入框,按钮,链接,这些都有特定的标签来标识,这个时候我们用标签来定位
    driver.find_element_by_tag_name('input')
    方式四:通过class属性来定位。类名,class是用来装饰的,是样式
    driver.find_element_by_class_name('s_ipt')


    方式五:链接文本匹配


    driver.find_element_by_link_text('新闻')
    匹配部分文本,写法如下:
    driver.find_element_by_partial_link_text('产品')

    方式六:xpath定位,实际使用过程中基本都是用这种方式来定位。//开头  标签[@属性=属性值]  属性组组合,如//input[@id='kw']

    写法:

    driver.find_element_by_xpath('//input[@id="kw"]')

    如果一个属性值定位不到,也可以用多个属性用and连接
    driver.find_element_by_xpath('//input[@id="kw" and @class="s_ipt"]')

    一般我们是用到上面这种相对定位的方式,绝对定位的方式一般不会用,绝对定位就是从根节点开始找,这样如果网页稍微有变化,就找不到了。


    A通过文本内容来定位text()

    写法://input[@id="su" and text()="百度一下"]或者//input[text()="百度一下"]  这种一般使用在定位菜单啊 这些文本内容不会变化的元素


    B通过contains()函数来定位,比如当文本内容很多时,我们可以用contains(text(),"上学啦")部分匹配文本
    也可以部分匹配某个属性值,比如contains(@class,"bg"),表示匹配class属性的部分值来查找元素
    以上图为例,//input[contains(@class,"bg")]--小心机,当我们看到class的值有空格分开的时候,表示是多个class
    //input[contains(text(),"百度")]


    
    
    
    
    
    
     



    每天进步一点点 分享快乐
  • 相关阅读:
    xfire webServeic 例子
    Spring3 url匹配规则
    js 字符串转化成数字
    JS回车事件,兼容目前所有浏览器
    笔记:Zygote和SystemServer进程启动过程
    安卓Task和Back Stack
    札记:Property动画
    札记:翻译-使用Scene和Transition实现【场景切换】动画效果
    算法:排序
    [BOT]自定义ViewPagerStripIndicator
  • 原文地址:https://www.cnblogs.com/zhangyqn/p/11836332.html
Copyright © 2020-2023  润新知