zoukankan      html  css  js  c++  java
  • 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(),"百度")]


    
    
    
    
    
    
     



    每天进步一点点 分享快乐
  • 相关阅读:
    运行自动安装apk代码,报错: Original error: Could not find aapt Please set the ANDROID_HOME environment variable with the Android SDK root directory path.
    已安装Appium-Python-Client,但appium无法导入WebDriver
    打开uiautomatorviewer.bat闪退
    常见的python面试题【杭州多测师】【python笔试题】
    支付功能怎么测试?
    自动化运维工具——ansible详解
    服务端编程——异常+校验器+环境变量
    服务端编程——初始koa
    用postman发送请求,在koa中获取的请求body为undefined
    jQuery入口函数测试
  • 原文地址:https://www.cnblogs.com/zhangyqn/p/11836332.html
Copyright © 2011-2022 走看看