【问题标题】:Chromedriver emulation with selenium and node使用 selenium 和 node 模拟 Chromedriver
【发布时间】:2015-02-16 11:09:48
【问题描述】:

尝试使用 chromedriver 模拟移动设备来设置 e2e 测试。我们在 Mac OS 上使用 chromedriver 2.3,并且提供的 chromeOptions 似乎无效:

var webdriver = require('selenium-webdriver');
var capabilities = {
    browserName: 'chrome',
    chromeOptions: {
        mobileEmulation: {
            deviceName: 'Apple iPhone 5'
        }
    }
};

var driver = new webdriver
        .Builder()
        .withCapabilities(capabilities)
        .build();

driver.get('http://google.com');

var bool = false;
setTimeout(function () {
    bool = true;
}, 9000);
driver.wait(function() {
    return bool;
}, 10000);

driver.quit();

我做错了什么?这是错误的堆栈跟踪:

UnknownError: unknown error: cannot parse capability: chromeOptions
from unknown error: unrecognized chrome option: mobileEmulation
  (Driver info: chromedriver=2.3,platform=Mac OS X 10.10.1 x86_64)
    at new bot.Error (/Users/michael/cdTest/node_modules/selenium-webdriver/lib/atoms/error.js:113:18)
    at Object.bot.response.checkResponse (/Users/michael/cdTest/node_modules/selenium-webdriver/lib/atoms/response.js:106:9)
    at /Users/michael/cdTest/node_modules/selenium-webdriver/lib/webdriver/webdriver.js:152:24
    at /Users/michael/cdTest/node_modules/selenium-webdriver/lib/goog/base.js:1582:15
    at webdriver.promise.ControlFlow.runInNewFrame_ (/Users/michael/cdTest/node_modules/selenium-webdriver/lib/webdriver/promise.js:1654:20)
    at notify (/Users/michael/cdTest/node_modules/selenium-webdriver/lib/webdriver/promise.js:465:12)
    at notifyAll (/Users/michael/cdTest/node_modules/selenium-webdriver/lib/webdriver/promise.js:442:7)
    at resolve (/Users/michael/cdTest/node_modules/selenium-webdriver/lib/webdriver/promise.js:420:7)
    at fulfill (/Users/michael/cdTest/node_modules/selenium-webdriver/lib/webdriver/promise.js:535:5)
    at /Users/michael/cdTest/node_modules/selenium-webdriver/lib/goog/base.js:1582:15

【问题讨论】:

  • 2.3 已经一年多了。您没有使用最新版本的 chromedriver 的任何原因?如果有原因,请将其添加到您的问题中。
  • 我尝试了最新版本,它显示相同的错误。我回去是因为我在想新版本中的某些东西可能会导致问题。该功能应该在 2.11 之后的版本中可用???

标签: node.js selenium mobile automated-tests selenium-chromedriver


【解决方案1】:

我在使用 Chrome 驱动程序 2.9 时遇到了同样的问题,现在它工作正常,因为我将它替换为 the newest Chrome Driver 2.15

【讨论】:

  • 需要注意的是设备版本。我能够重用你的代码,除了我必须让 Selenium 打开一个 Chrome 窗口,然后我检查了我必须使用哪些 iPhone 版本,因为“Apple iPhone 5”引发了一个错误,直到我将其更改为“iPhone” 6/7/8 加号'。
【解决方案2】:

这段代码在 nodeJS 和 selenium-webdriver 中绝对有效:^4.0.0-alpha.1 和 chrome 71;请注意,有时,列表

deviceName: 'Apple iPhone 5'

将随着新设备和旧设备的移除而改变。

【讨论】:

    猜你喜欢
    • 2022-01-26
    • 2012-08-15
    • 2018-06-19
    • 2021-05-04
    • 2020-08-16
    • 2019-11-08
    • 1970-01-01
    • 2018-06-11
    • 2021-04-17
    相关资源
    最近更新 更多