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

Testing iOS App on Simulator with Appium - Element Not Found

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

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

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

els3[0].click()

IndexError: list index out of range

我尝试了使用 accessibility idnameclass name 访问按钮元素的不同方法,但上述工作的 none。

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

如果我们尝试访问列表范围内不存在的索引处的列表,则会出现此错误"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") 方法出于任何原因 return 没有任何元素

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"        

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

每次发生视图转换或导航时,都需要时间来更新视图。更新所有内容后,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()

并且脚本会 运行 符合预期。