【发布时间】:2020-06-01 08:34:56
【问题描述】:
您好,我一直在互联网上进行大量搜索,以了解我应该如何从 Web 或本机上下文视图切换到 iframe。我正在尝试使用户自动登录到应用程序,并且第三个标识正在生成 OTP。这恰好在 iframe 内,我已经尝试了很多东西来与之交互。首先,我找不到任何关于如何通过关键字(Appium)使用机器人来实现这一点的好的文档,而且我没有很多编程经验来用 python 编写它然后调用它,但我已经尝试过了。
我尝试的第一件事是使用关键字“切换到上下文”和“获取上下文”,我已经在使用它们在本机和 web 视图之间切换:
List Contexts
${contexts}= Get Contexts
${native}= Get From List ${contexts} 0
${webview}= Get From List ${contexts} 1 #-1
${chromeviewiframe} get from list ${contexts} -1 #1
Set Test Variable ${native}
Set Test Variable ${webview}
set test variable ${chromeviewiframe}
#Test Case code
sleep 60
list contexts
switch to context ${chromeviewiframe}
wait until element is visible xpath=//*[@id="btnSMS"] 30
click element xpath=//*[@id="btnSMS"]
但是它永远不会找到 iframe 或按钮,因此会超时 - 我不确定是否可以使用“获取上下文”来查找 iframe。
我还尝试将他们页面上提供的一点代码 appium 放入我打算调用的 python 文件中,并希望能够切换帧,但这次尝试没有成功
#no idea what library's i am supposed to import and if the return makes sense?
class _frames():
def frame (self):
self.driver.switch_to.frame(3)
return self.driver.switch_to.frame(3)
我的 iframe xpath 是(删除了一些字符)#iframe //*[@id="xxx2iframe"]
手机仍然处于激活状态并且连接没有丢失,但我认为它无法找到 iframe 上下文 - 我无法正确测试 python 文件,因为代码不完整,我不确定我需要做什么来修复它测试那个“解决方案”。我还想知道我是否有另一个文件调用 selenium 并调用 switch frame 关键字,因为它们使用相同的驱动程序,它是否适用于 appium 自动化?我猜不是?
非常感谢您帮助解决这个问题,如果我无法让它自动登录并通过这一点,那么我编写自动化测试用例就没有多大意义了。
亲切的问候,杰姆
【问题讨论】:
标签: android iframe appium robotframework