- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我一直在尝试对移动 Protractor 测试进行自动化。我阅读了网络上的大部分博客,我读到了这篇博客,它是 Appium 与 Saucelabs 的“官方”博客: https://docs.saucelabs.com/tutorials/appium/#mobile-web-application我按照那里的说明进行操作,并将我的 config.js
文件配置为这样
var testName = 'Testing'; //Change Project's name here in order to be identified in BrowserStack
exports.config = {
// The address of a running selenium server.
seleniumAddress: 'http://bmsoko:[redacted]@ondemand.saucelabs.com:80/wd/hub',
// Capabilities to be passed to the webdriver instance.
multiCapabilities: [{
name: testName,
'appium-version': '1.4.0',
'browserName': 'Android',
'deviceName': 'Android Emulator',
'deviceOrientation': 'portrait',
'platform': 'Linux',
'version': '5.1',
username: 'bmsoko',
accessKey: '[redacted]'
}],
// Spec patterns are relative to the current working directly when
// protractor is called.
suites: {
mobile: './././specs/mobile.js'
},
// Maximum number of total browser sessions to run. Tests are queued in
// sequence if number of browser sessions is limited by this parameter.
// Use a number less than 1 to denote unlimited. Default is unlimited.
maxSessions: 2,
// protractor will save the test output in json format at this path.
// The path is relative to the location of this config.
resultJsonOutputFile: null,
framework: 'jasmine2',
// Options to be passed to Jasmine-node.
jasmineNodeOpts: {
showColors: true,
defaultTimeoutInterval: 100000,
realtimeFailure: true,
showTiming: true,
includeStackTrace: true,
isVerbose: true,
onComplete: null
},
onPrepare: function () {
//browser.driver.manage().window().maximize();
global.dvr = browser.driver; //variable to call selenium directly
global.isAngularSite = function (flag) {
browser.ignoreSynchronization = !flag; //This setup is to configure when testing non-angular pages
};
browser.manage().timeouts().implicitlyWait(10000);
browser.getCapabilities().then(function (cap) {
browserName = cap.caps_.browserName;
});
}
};
这是我在测试中尝试做的事情(我知道这不是一个很好的测试,我只是想测试 Appium 与我的 Angular 应用程序一起工作。):
it('User should see module 1s elements on the web page', function () {
browser.sleep(6000);
browser.driver.findElement(by.css('.play__video'));
});
但是当我运行测试时,我不断收到 Android 错误:
编辑:我可以看到网页正在打开。
Stack: Error: Failed: {"message":"[$injector:modulerr] Failed to instantiate module p due to:\nError: [$injector:nomod] Module 'p' is not available! You either misspelled the module name or forgot to load it. If registering a module ensure that you specify the dependencies as the second argument.\nhttp://errors.angularjs.org/1.3.14/$injector/nomod?p0=p\n at http://WEBAPPLICATION.com/assets/javascripts/global.js:107:21272\n at http://WEBAPPLICATIONs.com/assets/javascripts/global.js:107:29604\n at t (http://WEBAPPLICATION.com/assets/javascripts/global.js:107:29176)\n
我也尝试过这种情况:
it('User should see module 1 s video start on the web page', function () {
browser.wait(EC.visibilityOf(basePage.videoButtonModule1), 10000);
basePage.videoButtonModule1.click();
expect(basePage.videoContainerModule1.isDisplayed()).toBeTruthy();
});
但为此我收到上述错误以及以下消息:
Message: Failed: Error while waiting for Protractor to sync with the page: "[ng:test] no injector found for element argument to getTestability\nhttp://errors.angularjs.org/1.3.14/ng/test"
我做错了什么???请帮忙!!
编辑 2:分享我在 iOS 上遇到的错误
New Landing page module verification --> User should see module 1 s video start on the web page Message: Failed: Angular could not be found on the page WEBAPP.com/ : angular never provided resumeBootstrap Stack: Error: Failed: Angular could not be found on the page WEBAPP.com/ : angular never provided resumeBootstrap at /usr/local/lib/node_modules/protractor/node_modules/jasminewd2/index.js:102:16 at [object Object].promise.ControlFlow.runInFrame_ (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:1877:20) at [object Object].promise.Callback_.goog.defineClass.notify (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:2464:25) at [object Object].promise.Promise.notify_ (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:563:12)
最佳答案
我终于能够让它在我的测试中发挥作用,唯一能在酱料上发挥魔力的组合是
multiCapabilities: [
{
platformName: 'iOS',
platformVersion: '7.1',
browserName: '',
app: 'safari',
deviceName: 'iPhone Simulator',
'appium-version': "1.4.0",
username: '<USERNAME>',
accessKey: '<KEY>'
}
,
{
platformName: 'Android',
platformVersion: '4.4',
browserName: 'Browser',
deviceName: 'Android Emulator',
'appium-version': "1.4.0",
username: '<USERNAME>',
accessKey: '<KEY>'
}
],
除这些之外的其他组合将不起作用,至少对于我的应用程序来说是这样。
我已向 Protractor 团队对我的原始问题发表了评论,希望他们能够回答。
关于angularjs - 使用 Protractor + Appium + SauceLabs,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30787588/
如何从“酱汁实验室”的“测试”页面清除旧测试? 我尝试了一些东西之后就发出了噪音,我想整理一下。 从长远来看,会有很多有趣的构建,我希望能够对其进行存档/删除,这样就不难发现重要的测试运行。 最佳答案
我将从 Jenkins 转向使用 Concourse CI 来运行我的 Sauce 实验室 e2e 测试。 Sauce 实验室将具有相同内部版本号字符串的测试分组在一起: name:
我正在通过 TeamCity 在 Saucelabs 上并行运行 JUnit Selenium 测试。我有 4 个并发 session 和 125 个测试。当我运行构建时,一开始一切似乎都很好。有 4
我正在 Sauce labs Simulator 中运行移动应用测试。 我正在为 Saucelabs 上运行的每个测试上传 Android 文件 (.apk)。运行单个测试需要更多时间。 我的代码 c
我正在编写测试以在 sauce-labs 上运行。该测试在 sauce-labs 上运行完美,但它没有设置测试状态(通过/失败)。会是什么原因呢? public class AndroidSauceT
我有 UI 组件: 我想使用 Appium ID 定位器找到它:driver.findElement(By.id("fireEvent"))。它在本地运行良好,但 Appium 在 Saucelab
我想使用 saucelabs 隧道运行我的 testcafe 脚本。我尝试搜索文档以执行相同的操作,但没有找到任何内容。 我尝试在 testcafe github 和 saucelabs 文档上搜索文
我一直在尝试对移动 Protractor 测试进行自动化。我阅读了网络上的大部分博客,我读到了这篇博客,它是 Appium 与 Saucelabs 的“官方”博客: https://docs.sauc
我有一个项目有 Protractor 测试,由 TravisCI 通过 SauceLabs 执行。 其中一项测试涉及“上传”文件: it('should not allow "image/jpeg"
我正在尝试在 Travis CI 中启动并运行我的开源项目测试。我让他们使用 Selenium 服务器在本地工作。 看似一个相对简单的过程,但我缺乏完成任务的一些基本知识。 我有我的 .travis.
我正在使用 Protractor 测试 AngularJS 项目。我有一个图像文件上传测试,该测试在我的本地 Mac 计算机上正常工作并通过。然而,当我通过 Saucelabs 运行相同的测试时,测试
我正在尝试让 Java“入门”应用程序正常工作,我在 POM 中注意到了这一点: com.saucelabs sauce_testng [1.0.0,) test
以下内容是根据https://saucelabs.com/platforms中列出的配置进行配置的. DesiredCapabilities capabilities = new DesiredCap
这是我尝试自动化的工作流程(它是一个 Java 网络应用程序): 开发人员在 Selenium IDE(带 Firefox)中创建/编辑测试套件 该套件作为 HTML 文件的集合在项目存储库中维护 在
我们正在尝试使用 SauceLabs 来验证我们基于浏览器的 QUnit 测试是否通过了流行的设备/浏览器组合...... 当我们在浏览器中查看时,测试通过:https://ordenado.hero
我有一个带有 Protractor 测试的网络服务器,我想用 saucelabs 设置无尽的测试。他们说只需将 sauceLabs 用户和 key 添加到 Protractor 的 conf.js 文
我有一个 selenium 自动化框架,它使用 junit 在我选择的浏览器上本地运行测试。我目前使用 junitparams 来参数化我的一些测试。例如 @RunWith(JUnitParamsRu
我在与 Saucelabs 连接时遇到一些问题。当我尝试连接它时,它显示一个错误:参数不正确。我们想要 {"required":["desiredCapabilities"],"optional":[
从 Jenkins 作业运行的 Protractor 规范,连接到 SauceLabs。它单击按钮下载 PDF,并检查文件是否已成功下载。我无法让 Chrome 浏览器不使用绝对路径打开“另存为”提示
我正在尝试在 saucelab 真实设备上运行 Appium 测试。但这是抛出错误“没有符合您条件的设备。”所有带有控制台日志的配置文件都粘贴在这里:https://paste.gg/p/anonym
我是一名优秀的程序员,十分优秀!