• 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
  • 相关阅读:
    docker (2) 私有仓库的建立
    golang (5) http 请求分析
    java (1)
    golang (5) ---工程管理
    Mac使用一些经验
    数组的遍历
    进制
    数组的初始化
    数组基本概念
    博客开始更新第一天
  • 原文地址:https://www.cnblogs.com/jackyroc/p/7718365.html
Copyright © 2020-2023  润新知