簡體   English   中英

Nightwatch.js - 無法使用 Appium(iOS 模擬器)執行 touchAction 或滾動,尋找解決方案

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM