我正在测试一个基于Hybrid Application Canvas的Android Phone应用程序,我要测试的大多数功能都是基于Canvas的,而我唯一的方法就是使用从Python脚本调用的JavaScript。
在执行Javascript之前,我通过使用设置上下文将Phones本机视图转换为Web视图
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可以正常工作并执行某些操作。
现在;如果我想获取页面信息(以前使用夜视仪完成此操作)
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
。
因此,我认为应该以某种方式传递可以在其上运行命令的浏览器实例。
答案 0 :(得分:3)
它们是不同的上下文。 this.browser
不可用。您将需要page.YourPage();
通过driver
或execute_script
做任何事情。