使用 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 id
、name
和 class 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()
并且脚本会 运行 符合预期。
我正在使用 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 id
、name
和 class 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()
并且脚本会 运行 符合预期。