zoukankan      html  css  js  c++  java
  • Selenium自动化测试-4.By定位及如何确定元素唯一

    ——————·今天距2020年80·——————

    这是ITester软件测试小栈第56次推文

       

    大家好

    我是vivi小胖虎

    今天是周六

    然而又是上班的一天

    不管怎样

    学习的心态总是要有的

    争取早日当上大佬

    然后自己在家当老大

    梦想还是要有的

    万一实现了呢

    在上一篇:Selenium自动化测试-元素定位(3),我们认识了css定位。到此为止,已经了解了元素的8种定位方法,今天我们要介绍的是By定位及如何确定元素唯一。

    什么是By定位?

    (1)有时候我们不知道用哪种方法来定位元素,By定位可以根据实际场景设定定位策略。

    (2)By定位和之前学习的8种定位方法差不多,只不过是写法上的不同。

    (3)使用By定位,首先需要导入By类:

    from selenium.webdriver.common.by import By

    语法如下:

    定位方式
    定位单个元素
    id定位
    find_element(By.ID,"id")
    class定位
    find_element(By.CLASS_NAME,"class")
    name定位
    find_element(By.NAME,"name")
    tag定位
    find_element(By.TAG_NAME,"tag")
    xPath定位
    find_element(By.XPATH,"xPath")
    Link定位
    find_element(By.LINK_TEXT,"text")
    PartialLink定位
    find_element(By.PARTIAL_LINK_TEXT,"partialText")
    CSS选择器定位
    find_element(By.CSS_SELECTOR,"css")

    我们以百度搜索框为例,看下用By定位是怎么写的。

    由此可见,By定位只是把8种定位统一成一个写法。

    如果觉得导入By类麻烦,又想把8种写法统一起来,有办法么,当然,我们接下来介绍简化版的:

    By.ID = 'id'

    By.NAME = 'name'

    By.LINK_TEXT = 'link text'

    By.PARTIAL_LINK_TEXT = 'partial link text'

    By.TAGE_NAME = 'tag name'

    By.CLASS_NAME = 'class name'

    By.CSS_SELECTOR = 'css selector'

    By.XPATH = 'xpath'

    用百度搜索框为例,写简化版的定位。

    是不是发现,这种写法更方便呢?

    定位元素的唯一性

    我们在写自动化脚本过程中,会遇到因为元素不是唯一导致定位元素失败的场景,那么我们可以先确定此元素是否唯一,再来定位元素。

    一、在源码中查找

    以百度搜索框为例:

    1.浏览器打开开发者模式(F12),定位到百度搜索框上,发现源码如下:

    <input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">

    2.在css定位中讲过,class="s_ipt"、id="kw",css定位可以写成input.s_ipt,input#kw,

    那么快捷键Crtl+F,在开发者工具左下角搜索框输入input.s_ipt 或 input#kw,回车进行搜索:

    3.搜索到了会高亮显示,发现只有一条结果,那么我们可以确定这个元素是唯一的,放心的定位了。有时候也会搜索出多个结果,这个时候我们回车键依次查看,元素是否唯一。

    二、在控制台查找

    在控制台console中确定元素的唯一,主要是使用JavaScript获取HTML DOM元素的方法,语法如下:

    id 获取:document.getElementById()

    class 获取:document.getElementsByClassName()

    name 获取:document.getElementsByName()

    tag 获取:document.getElementsByTagName()

    css获取:document.querySelector()

    1.在开发者工具中,切换到console一栏,如下:

    2.以百度浏览器输入框为例:

    <input type="text" class="s_ipt" name="wd" id="kw" maxlength="100" autocomplete="off">

    其中id="kw",那么可以写成document.getElementById('kw')

    在console下输入document.getElementById('kw'),然后回车。

    只返回了一条数据,且是我们要查找的元素,那么我们可以确定此元素是唯一的,可以放心的定位了。

    下一篇我们将介绍一款定位神器,敬请期待~

    最后是今天的分享:SoapUI接口测试视频及电子文档

    ITester软件测试小栈今日分享

    分享内容

    SoapUI接口测试视频及电子文档

    领取方式

    微信公众号后台回复:20191012

    有图有真相

    以上


    That‘s all

    ITester软件测试小栈

    往期内容宠幸

    叮—这有一打让你666的测试终极资料包,请查收!

    QQ空间面试题放送,速度教科书式扑街补救offer!

    金九银十加薪季,测试题预热一波。

    Selenium自动化测试-1.selenium介绍及环境安装

    Selenium自动化测试-2.浏览器基本操作

    Selenium自动化测试-3.元素定位(1)

    Selenium自动化测试-3.元素定位(2)

    Selenium自动化测试-3.元素定位(3)

    速看,APP测试之ADB最全指南!

    APP测试之Monkey压力测试(一)

    APP测试之Monkey压力测试(二)


    快来星标 置顶 关注

     T ester

    想要获取相关资料软件 ?

    Q群:701841415

  • 相关阅读:
    ASP.NET MVC 4使用jQuery传递对象至后台方法
    大沙发斯蒂芬
    2017年年总结
    Java将HTML导出为PDF
    华硕笔记本安装Ubuntu 17.04版本
    全站启用HTTPS配置详解
    设计模式-1 单例模式
    基础知识扫盲--1 抽象类和接口
    ASP.Net 管道模型 VS Asp.Net Core 管道 总结
    索引深入理解
  • 原文地址:https://www.cnblogs.com/ITester520/p/13203381.html
Copyright © 2011-2022 走看看