zoukankan      html  css  js  c++  java
  • RobotFramework测试问题二:各种元素不能定位问题

    各种元素不能定位问题

    一、元素定位

    A. Click Element + xpath 
    B. Click Element + contains 
    C. Execute Javascript + getElementsById 
    D. Jquery 
    E. Execute Javascript + getElementsByClassName

    二、用例:修改用户信息

    1. 登录
    2. 点击用户的“基本资料”
    3. 修改用户信息
    4. 确定
    5. 检测结果

    这里写图片描述

    预期测试用例

    这里写图片描述

    实际测试用例

    这里写图片描述

    三、各种元素不能定位问题

    这里写图片描述

    A. 昵称元素:id vs. xpath 
    没有提供 id 元素,改用 xpath 相对路径定位(使用相对路径,即使上层节点改变也不会受到影响。例如,父节点或者祖父节点改变)。 
    绝对路径:/html/body/form/div[3]/div[2]/div[2]/div/div[2]/ul/li[1]/input 
    相对路径://ul[@class=’user-imfor-bar’]/li/input

    Input Text  xpath=//ul[@class='user-imfor-bar']/li/input    Allan
    • 1

    B. 性别元素:Select Radio Button vs. Click Element 
    观察页面设计,性别元素是个 Radio。但是,在使用 Select Radio Button 时,并没有生效。尝试用 xpath 的相对路径去定位,也失效。最后,尝试用 contains 方法,成功。

    Click Element   xpath=//*[@id="sexchange"]/label[contains(text(), '男')] #性别
    Click Element   xpath=//*[@id="sexchange"]/label[2][contains(text(), '女')]  #性别
    • 1
    • 2

    C. 生日元素:Select From List By Value vs. (Click Element & Execute Javascript) 
    观察页面设计,生日元素是个 List。但是,在使用 Select From List By Value 时,并没有生效。

    这里写图片描述

    网页源代码中,并没有提供 locator & value 和 locator & index 的方式定位。而是将两者分开。

    这里写图片描述

    所以,改为 Click Element 定位。分两步走:先点击下拉栏,再选择年月。

    Click Element   selectpick_span_select_year #年
    sleep   3   
    Click Element   xpath=//ul[@class='user-imfor-bar']/li[3]/div[1]/div/div[2]/ul/li[10]   
    sleep   3   
    • 1
    • 2
    • 3
    • 4

    下面就有点让人抓狂了,T T! 
    在选择下拉日期的时候,定位不到元素 id=selectpick_span_select_day。

    Click Element   selectpick_span_select_day  #日
    sleep   3   
    • 1
    • 2

    还好提供了 id,尝试用 Execute Javascript 的 getElementsById 方法定位,成功。

    Execute Javascript  document.getElementById('selectpick_select_day').click()    #日
    • 1

    在选择日期的时候,报错:Element  is not clickable at point。

    FAIL    WebDriverException: Message: unknown error: Element <label>...</label> is not clickable at point (1194, 949). Other element would receive the click: <li style="font-size:13px;height:42px; line-height:42px;">...</li>
    • 1

    应该是元素被覆盖,只能调整策略,使用 contains 方法。

    Click Element   xpath=//ul[@class='selectpick_ul_select_day']/li/label[2][contains(text(), '15')] #15为日期
    # 也可以使用传参方式
    ${date} Set Variable 15
    Click Element   xpath=//ul[@class='selectpick_ul_select_day']/li/label[2][contains(text(), '${date}')]
    • 1
    • 2
    • 3
    • 4

    D. 点击确定元素: Click Element + jquery 
    没有提供 id,也无法 xpath 定位。

    Click Element   dom=$("input[class='percenter-content-input']")    #确定
    • 1

    四、用例:立即学习

    1. 登录,搜索课程
    2. 进入“课程详情”
    3. 点击“课程大纲”
    4. 随机点击“立即学习”
    5. 进入“学习课程”

    这里写图片描述

    E. 立即学习元素:Execute Javascript +getElementsByClassName 
    立即学习元素是隐藏元素,定位不到。xpath 方法的相对和绝对路径都无法定位。

    Click Element   xpath=//div[@class="cacc-kcdg-box"]/div[2]/ul/li[${index}]/a/div
    • 1

    需要随机点击“立即学习,但是 Execute Javascript 没有提供 getElementByXpath 方法。尝试 getElementsByClassName 方法。

    ${index}   Evaluate    random.randint(0, 10)   random  #产生课程随机数
    Execute Javascript  document.getElementsByClassName('caccb-kcdg-play')[${index}].childNodes[0].click();
    • 1
    • 2
  • 相关阅读:
    剑指offer-二维数组中的查找
    TF-IDF(term frequency–inverse document frequency)
    Java实现中文字符串的排序功能
    当前课程
    【R】资源整理
    CentOS相关
    【转】Setting up SDL Extension Libraries on MinGW
    【转】Setting up SDL Extension Libraries on Visual Studio 2010 Ultimate
    【转】Setting up SDL Extension Libraries on Code::Blocks 12.11
    【转】Setting up SDL Extension Libraries on Visual Studio 2019 Community
  • 原文地址:https://www.cnblogs.com/jackyroc/p/7718365.html
Copyright © 2011-2022 走看看