[英]How to configure Nightwatch.js + Selenium Hub + Appium + real mobile devices?
[英]Nightwatch.js - Cannot perform touchAction or scroll with Appium (iOS Simulator), looking for solutions
我正在通過 Nightwatch 和 Appium 運行一些測試,但我無法使用 iOS 模擬器成功實現滾動操作。 我的測試設置為能夠在 Chrome、Safari 或 Firefox 瀏覽器或使用 Safari 的 iOS 模擬器上運行。 該應用程序是使用 React 構建的,我使用的是 Javascript。 一切順利,直到我必須滾動到屏幕上的特定元素。
使用 Web 瀏覽器時,我需要做的就是在特定元素上發送 .click() 方法,該方法會自動將該元素帶入視圖,但在 iOS 模擬器上似乎並非如此。
這是我在 nightwatch.conf.js 文件中為 iOS 設置的內容。 到目前為止,我從網上搜索中看到的任何方法都不夠用。 Appium 文檔列出了幾個方法,但沒有一個是可執行的,或者沒有靜默失敗。 有沒有人對如何使用此設置正確執行滾動有可能的解決方案或建議? 謝謝,非常感謝
"ios": {
"selenium_start_process": false,
"selenium_port": 4723,
"selenium_host": "localhost",
"silent": true,
"automationName": "XCUITest",
"desiredCapabilities": {
"browserName": "safari",
"platformName": "iOS",
"platformVersion": "12.2",
"deviceName": "iPad Pro (9.7 -inch)"
}
},
這是我嘗試實現的示例(目標是移動到按鈕元素並在它進入視圖后單擊它 - 這是一個下拉列表)
browser
.assert.elementPresent('div[data-mr="quiz-dont-know"]')
.click('div[data-mr="quiz-dont-know"]')
.assert.elementPresent('div[data-mr="grey-info"]')
browser.pause(2000)
browser.element('css selector', 'div[data-"mr=grey-info"]', function(button) {
console.log("THIS ELEMENT IS " + button.value.ELEMENT);
browser.moveTo(button.value.ELEMENT, 10, 10)
browser.elementIdClick(button.value.ELEMENT);
})
.pause(2000)
.assert.elementPresent('div[data-mr="grey-info-options"]')
我想你想使用“.scrollIntoView()”
buttons.value.forEach((button, index) => {
browser.elementIdText(button.ELEMENT, result => {
if(result.value === 'None') {
console.log("THIS ELEMENT IS " + button.ELEMENT);
browser.execute(function(button) {
//var elmnt =button // based on user comment
var elmnt = document.querySelector([data-mr="grey-info"]')
elmnt.scrollIntoView();
});
browser.elementIdClick(button.ELEMENT);
}
});
});
根據 Jortega 的建議,我找到了一個解決方案。 雖然他最初的建議沒有成功,但我對此進行了一番掙扎,發現如果我使用 document.querySelector([data-mr="grey-info"]') 並為其分配一個變量,那么我就可以調用scrollIntoView 方法。 多謝
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.