【发布时间】:2020-03-01 23:06:32
【问题描述】:
我正在测试一个基于 Hybrid Application Canvas 的 Android 手机应用程序,我必须测试的大部分功能都是基于 Canvas 的,我唯一的方法是使用 JavaScript 从 Python 脚本中调用。
在执行 Javascript 之前,我使用 set Contexts 将 Phones Native View 转换为 Web View
def set_current_context(self, num_ctx):
self.driver.switch_to.context(self.driver.contexts[int(num_ctx)])
def set_serial(self, android_serial):
desired_caps = self.getDevice(android_serial)
self.driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
return self.driver
“document.title”或“window.xyz”等基本 JavaScript 可以正常工作并执行某些操作。
现在;如果我想获取页面信息(之前是使用 nightwatch 完成的)
this.browser.page.YourPage(); // Nightwatch javascript
但是如果我直接发送上面的命令我得到错误JavascriptException: Message: javascript error: Cannot read property 'page' of undefined
def direct_script(self, script, *args):
print(script, *args)
self.driver.execute_script("$(document).ready (function (){ this.browser.page.YourPage() });", *args)
我从浏览器的控制台手动检查了this.browser 返回undefined。
所以在我看来,我认为应该有某种方法可以传递浏览器实例,我可以在该实例上运行命令。
【问题讨论】:
标签: javascript appium-android python-appium