利用Appium为IOS产生code不能运行的脚本量角器它说findelement不是一个函数 [英] Cannot run protractor scripts using code generated by Appium for IOS it says that findelement is not a function

查看:296
本文介绍了利用Appium为IOS产生code不能运行的脚本量角器它说findelement不是一个函数的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想我的自动化使用的Ipad航空模拟器,appium和量角器,但该问题的角度JS网站,我不能够正确地运行脚本的测试。

这是我的配置文件

  exports.config = {
  allScriptsTimeout:600000,
  seleniumAddress:http://0.0.0.0:4723/wd/hub',  规格:
    测试套件/ test3.js
  ]  功能:{
    browserName:野生动物园,
   appium版本:1.4.13,
    platformName:iOS版,
    platformVersion:'9.3',
    DEVICENAME:iPad的空气
},  chromeOnly:假的,  的baseUrl:http://10.0.22.82:4180/jws/fetablet_dev_T1000',  构架:[
    摩卡,
    薛宝钗
  ]mochaOpts:{    defaultTimeoutInterval 1000000
}
};

我test3.js文件包含以下内容:

 使用严格的;
VAR WD =要求(WD);
VAR柴=要求(柴);
VAR chaiAsPromised =要求(柴-AS-承诺);chai.use(chaiAsPromised);VAR预计= chai.expect;chai.should();
chaiAsPromised.transferPromiseness = wd.transferPromiseness;描述(我的应用程序',函数(){它('应登录测试,函数(){VAR所需= {
browserName:野生动物园,
platformName:iOS版,
名称:这是登录测试的例子
}browser.get(0.22.82:4180 / JWS / fetablet_dev_T1000);
 browser.driver.findelement(by.xpath(\"//UIAApplication[1]/UIAWindow[2]/UIAScrollView[1]/UIAScrollView[1]/UIAWebView[1]/UIATextField[1]\")).sendKeys(\"RET02\");
});});

在运行 protractor.config.js 我有以下的错误,我的测试失败,我怎么能确定的元素呢?

 使用硒服务器在http://0.0.0.0:4723/wd/hub
[启动]运行的webdriver 1实例
入门
F失败:
1)我的应用程序应该登录测试
  信息:
    失败:browser.driver.findelement不是一个函数
  堆栈:
    类型错误:browser.driver.findelement不是一个函数
        在对象<&匿名GT; (/Users/qaquod/Development/qa/qa_fetablet/testsuite/test3.js:26:17)
        在/usr/local/lib/node_modules/protractor/node_modules/jasminewd2/index.js:96:23
        在新的承诺(/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:1043:7)
        在controlFlowExecute(/usr/local/lib/node_modules/protractor/node_modules/jasminewd2/index.js:82:18)
        在TaskQueue.execute_(/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:2790:14)
        在TaskQueue.executeNext_(/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:2773:21)
        在/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:2697:25
        在/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:639:7
        在process._tickCallback(内部/流程/ next_tick.js:103:7)
    来源:任务:运行(应该登录测试)的控制流
        在对象<&匿名GT; (/usr/local/lib/node_modules/protractor/node_modules/jasminewd2/index.js:81:14)
    从异步测试:
    错误
        在套房<&匿名GT; (/Users/qaquod/Development/qa/qa_fetablet/testsuite/test3.js:15:1)
        在对象<&匿名GT; (/Users/qaquod/Development/qa/qa_fetablet/testsuite/test3.js:13:1)
        在Module._compile(module.js:413:34)
        在Object.Module._extensions..js(module.js:422:10)
        在Module.load(module.js:357:32)
        在Function.Module._load(module.js:314:12)
1规格,1失败
完成了0.03秒
[启动] 0实例(S)的webdriver的仍在运行[启动]野生动物园#01失败1测试(S)
[启动]综合:1失败规范(S)
[启动]程序退出,错误code 1


解决方案

您可能会想改变这个是肯定的:

<$p$p><$c$c>browser.driver.findelement(by.xpath(\"//UIAApplication[1]/UIAWindow[2]/UIAScrollView[1]/UIAScrollView[1]/UIAWebView[1]/UIATextField[1]\")).sendKeys(\"RET02\");

<$p$p><$c$c>browser.driver.findElement(by.xpath(\"//UIAApplication[1]/UIAWindow[2]/UIAScrollView[1]/UIAScrollView[1]/UIAWebView[1]/UIATextField[1]\")).sendKeys(\"RET02\");                   ^ //电子商务,而不是Ë

I want to automate my tests for an Angular JS site using Ipad Air simulator, appium and protractor but the problem that i'm not able to run correctly the script.

This is my config file

​exports.config = {
  allScriptsTimeout: 600000,
  seleniumAddress: 'http://0.0.0.0:4723/wd/hub',

  specs: [
    'testsuite/test3.js'
  ],

  capabilities: {
    browserName: 'safari',
   'appium-version': '1.4.13',
    platformName: 'iOS',
    platformVersion: '9.3',
    deviceName: 'iPad Air'
},

  chromeOnly: false,

  baseUrl: 'http://10.0.22.82:4180/jws/fetablet_dev_T1000',

  frameworks:[
    'mocha',
    'chai'
  ],

mochaOpts: { 

    defaultTimeoutInterval:1000000
}         
};   

My test3.js file contain :

"use strict";
var wd = require("wd");
var chai = require("chai");
var chaiAsPromised = require("chai-as-promised");

chai.use(chaiAsPromised);

var expect = chai.expect;

chai.should();
chaiAsPromised.transferPromiseness = wd.transferPromiseness;

describe('my app', function() {

it('should make the login test',function()  {

var desired = {
browserName: 'safari',
platformName:'iOS',
name:"This is an example for login test"
}

browser.get("0.22.82:4180/jws/fetablet_dev_T1000");


 browser.driver.findelement(by.xpath("//UIAApplication[1]/UIAWindow[2]/UIAScrollView[1]/UIAScrollView[1]/UIAWebView[1]/UIATextField[1]")).sendKeys("RET02");


});

});

While running protractor.config.js i have the following error and my test is failed, how can i identify elements?

​Using the selenium server at http://0.0.0.0:4723/wd/hub
[launcher] Running 1 instances of WebDriver
Started
F

Failures:​​
1) my app should make the login test
  Message:
    Failed: browser.driver.findelement is not a function
  Stack:
    TypeError: browser.driver.findelement is not a function
        at Object.<anonymous> (/Users/qaquod/Development/qa/qa_fetablet/testsuite/test3.js:26:17)
        at /usr/local/lib/node_modules/protractor/node_modules/jasminewd2/index.js:96:23
        at new Promise (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:1043:7)
        at controlFlowExecute (/usr/local/lib/node_modules/protractor/node_modules/jasminewd2/index.js:82:18)
        at TaskQueue.execute_ (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:2790:14)
        at TaskQueue.executeNext_ (/usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:2773:21)
        at /usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:2697:25
        at /usr/local/lib/node_modules/protractor/node_modules/selenium-webdriver/lib/promise.js:639:7
        at process._tickCallback (internal/process/next_tick.js:103:7)
    From: Task: Run it("should make the login test") in control flow
        at Object.<anonymous> (/usr/local/lib/node_modules/protractor/node_modules/jasminewd2/index.js:81:14)
    From asynchronous test: 
    Error
        at Suite.<anonymous> (/Users/qaquod/Development/qa/qa_fetablet/testsuite/test3.js:15:1)
        at Object.<anonymous> (/Users/qaquod/Development/qa/qa_fetablet/testsuite/test3.js:13:1)
        at Module._compile (module.js:413:34)
        at Object.Module._extensions..js (module.js:422:10)
        at Module.load (module.js:357:32)
        at Function.Module._load (module.js:314:12)
1 spec, 1 failure
Finished in 0.03 seconds
[launcher] 0 instance(s) of WebDriver still running
​
[launcher] safari #01 failed 1 test(s)
[launcher] overall: 1 failed spec(s)
[launcher] Process exited with error code​ 1​

解决方案

You might probably want to change this for sure :

browser.driver.findelement(by.xpath("//UIAApplication[1]/UIAWindow[2]/UIAScrollView[1]/UIAScrollView[1]/UIAWebView[1]/UIATextField[1]")).sendKeys("RET02");

to

browser.driver.findElement(by.xpath("//UIAApplication[1]/UIAWindow[2]/UIAScrollView[1]/UIAScrollView[1]/UIAWebView[1]/UIATextField[1]")).sendKeys("RET02");

                   ^ //E instead of e

这篇关于利用Appium为IOS产生code不能运行的脚本量角器它说findelement不是一个函数的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆