将WebDriver的浏览器实例传递给Appium中的JavaScript

问题描述 投票:0回答:1

[我正在测试基于Hybrid Application Canvas的Android Phone应用程序,我必须测试的大多数功能都是基于Canvas的,而我唯一的方法就是使用JavaScript从Python脚本中调用。

执行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的浏览器控制台中手动进行检查。

因此,我认为应该以某种方式传递可以在其上运行命令的浏览器实例。

javascript appium-android python-appium
1个回答
0
投票
它们是不同的上下文。 this.browser不可用。您需要通过page.YourPage();driverexecute_script尝试做的事情。
© www.soinside.com 2019 - 2024. All rights reserved.