使用Appium在模拟器上测试iOS应用-找不到元素

时间:2018-08-24 16:24:09

标签: ios appium ui-testing appium-ios

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

NSManagedObject

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

  

els3 [0] .click()

     

IndexError:列表索引超出范围

我尝试了使用db_data.attachment.get(doc._id, doc.strName, function(err, body) { if (!err) { fs.writeFile('temp.wav', body, function(err) { if (err) { console.log("error while writing file!") } }); } else { console.error("error retrieveing the document..", err); } }); els1 = driver.find_elements_by_accessibility_id("login") els1[0].click() accessibility id来访问按钮元素的不同方法,但是上述工作均无效。

我想念什么?这是Appium软件的错误吗?

2 个答案:

答案 0 :(得分:0)

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

例如

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:列表索引超出范围”

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

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

答案 1 :(得分:0)

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

每次进行视图转换或导航时,都会花费一些时间来更新视图。更新所有内容后,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()

该脚本将按预期运行。