【问题标题】:Testing iOS App on Simulator with Appium - Element Not Found使用 Appium 在模拟器上测试 iOS 应用程序 - 未找到元素
【发布时间】:2019-01-31 04:00:27
【问题描述】:

我正在使用 Appium 客户端为我的 iOS 应用记录和生成测试脚本。 在 App Inspector 上,我可以点击登录按钮并生成脚本(在 python 中),如下所示:

els1 = driver.find_elements_by_accessibility_id("login")
els1[0].click()

我可以通过点击 App Inspector 上的按钮成功登录我的应用,但在 mac 终端上运行脚本时出现错误:

els3[0].click()

IndexError: 列表索引超出范围

我尝试了使用accessibility idnameclass name 访问按钮元素的不同方法,但以上方法均无效。

我错过了什么?是 Appium 软件的 bug 吗?

【问题讨论】:

    标签: ios appium ui-testing appium-ios


    【解决方案1】:

    如果我们尝试访问列表范围内不存在的索引处的列表,则会出现此错误“IndexError: list index out of range”

    例如

    thislist = ["apple", "banana", "cherry"] // here list index range is 0-2
    thislist[1] = "blackcurrant" // this works fine as value of index is in range 0-2
    

    但如果我在下面尝试

    // this is run time error i.e. "IndexError: list index out of range"
    //  as value of index is out of range 0-2
        thislist[3] = "blackcurrant" 
    

    注意:列表索引以 0 开头

    考虑 find_elements_by_accessibility_id("login") 方法因任何原因不返回任何元素的情况

    els1 = driver.find_elements_by_accessibility_id("login");
    

    我尝试在 0 索引处访问 List els1,该索引为空,因此出现错误“IndexError: list index out of range”

    现在在访问 List 之前,我们将检查 List 是否为空

    els1 = driver.find_elements_by_accessibility_id("login")
    if els1:
       els1[0].click()
    else :
       print "Element not found and els1 array is empty"        
    

    【讨论】:

    • 虽然此代码可能会回答问题,但提供有关它如何和/或为什么解决问题的额外上下文将提高​​答案的长期价值。
    • 有没有办法正确访问元素使列表不为空?
    • 列表是否为空取决于定位器策略,我们总是可以在点击元素之前检查列表的大小,以避免我们用来存储元素的集合(列表)出现异常
    【解决方案2】:

    经过数小时的谷歌搜索和尝试,我发现问题在于视图刷新。

    每次发生视图转换或导航时,都需要时间来更新视图。一旦一切都更新了,webDriver 就可以使用给定的搜索参数成功地识别一个元素。

    所以每次交互之间只需等待一秒钟:

    el1 = driver.find_element_by_accessibility_id("login")
    el1.click()
    // wait for the view to get updated
    driver.implicitly_wait(1)
    
    els2 = driver.find_elements_by_name("Edit")
    els2[0].click()
    

    脚本会按预期运行。

    【讨论】:

      猜你喜欢
      • 2017-03-07
      • 2018-10-13
      • 1970-01-01
      • 2014-12-17
      • 2015-10-14
      • 2020-05-11
      • 2017-07-20
      • 1970-01-01
      • 2020-05-09
      相关资源
      最近更新 更多