我正在使用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软件的错误吗?
答案 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()
该脚本将按预期运行。