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



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

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

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

els3[0].click((

索引错误:列出索引超出范围

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

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

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

例如

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 索引处访问列表 els1,该索引为空,因此出现错误"索引错误:列出索引超出范围">

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

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()

并且脚本将按预期运行。

最新更新