Я тестирую приложение для Android Phone, которое основано на Hybrid Application Canvas, большинство функций, которые мне нужно протестировать, основаны на Canvas, и единственный способ, которым я могу, - это использовать JavaScript для вызова из скриптов Python.
Перед выполнением Javascript я преобразую собственный вид телефонов в веб-представление, используя set Contexts
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
Базовые сценарии Java, такие как «document.title» или «window.xyz», работают нормально и выполняют определенные действия.
Теперь;Если я хочу получить информацию о странице (что ранее было сделано с помощью ночных часов)
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
.
Так что, на мой взгляд, я думаю, что должен быть какой-то способ передать экземпляр браузера, на котором я могу запускать команды.