我似乎无法使Protractor意识到Angular已加载并正在运行。当Chrome打开时,我的应用程序已完全加载到浏览器中,因此我知道Angular已加载并正常运行。
配置文件:
exports.config = {
seleniumServerJar: 'C:/Dev/PrismWeb/selenium/selenium-server-standalone-2.35.0.jar',
seleniumPort: null,
chromeDriver: 'C:/Dev/PrismWeb/selenium/chromedriver.exe',
seleniumArgs: [],
seleniumAddress: null,
allScriptsTimeout: 110000,
specs: ['c:/dev/prismweb/test/e2e/*.js'],
capabilities: {'browserName': 'chrome'},
baseUrl: 'http://localhost:8080',
rootElement: 'html',
jasmineNodeOpts: {
onComplete: null,
isVerbose: true,
showColors: true,
includeStackTrace: true,
defaultTimeoutInterval: 30000
}
};
我只有一个要运行的测试,但由于量角器找不到Angular而失败了。
考试:
describe('homepage loads: ', function(){
var ptor;
ptor = protractor.getInstance();
beforeEach(function(){
ptor.get('/');
});
it('should load the prism homepage: ', function(){
var usernameField = ptor.findElement(protractor.By.id("username"));
//expect(usernameField).toBeDefined();
});
});
这是我得到的错误:
UnknownError:JavaScript错误:未定义角度(会话信息:chrome =
30.0.1599.69)(驱动程序信息:chromedriver = 2.2,platform = Windows NT 6.1 SP1
x86_64)(警告:服务器未提供任何堆栈跟踪信息)命令持续时间或超时:19毫秒内部版本信息:版本:‘2.35.0’,版本:’c916b9d’,时间:‘2013-08-12
15:42:01’系统信息:os.name:’Windows 7’,os.arch
:’amd64’,os.version:‘6.1’,java.version:‘1.7.0_21’会话ID:1ef7dcd7c5fc9c4e9e1dede050002adf驱动程序信息:org.openqa.selenium.chrome.ChromeDriver功能[{platform
= XP,acceptSslCerts = true,javascriptEnabled = true,浏览器名称= chrome,chrome =
{chromedriverVersion = 2.2},可旋转= false,locationContextEnabled = true,版本=
30.0.1599.69,cssSelectorsEnabled = true,databaseEnabled = true,handlesAlerts
= true,browserConnectionEnabled = false,webStorageEnabled =
true,nativeEvents = true,applicationCacheEnabled = false,takesScreenshot =
true}]
我尝试将ng-app属性移到body标签(并相应地更改配置),但是遇到了同样的错误。我们在html标签上也有一个ng-
controller属性,我尝试将其移到主体上,而在ngf标签上保留了ng-app属性,但结果是一样的。是否有人对此失败有任何见解?
编辑:可能需要帮助的一些注意事项。我已经更新了上面的测试,以包括手动引导工作。Angular和所有模块的脚本标记位于页面底部,紧接在BODY标记之前。HTML标记仍然具有ng-
app =“ myApp”属性以及ng-controller =“
baseController”属性。如果我尝试在测试中手动引导应用程序,则会得到以下信息:
ReferenceError: angular is not defined
让我担心的另一件事是,我们使用的模块之一绝对需要将“ $”映射到jQuery,因此我们将其映射为:
<script type="text/javascript">
var $jq=jQuery.noConflict();
var $=jQuery.noConflict();
</script>
包含ng-app的位置:
<!DOCTYPE html>
<html ng-app="prismApp" ng-controller="baseController">
<head>
我不太确定是否要在a beforeEach()
内进行操作,it()
但除此之外,您是否尝试过等待一会儿?显然,我的意思是a
ptor.waitForAngular()
或a ptor.wait()
?
尝试一下ptor.sleep(10000)
之后ptor.get()
,看看是否是定时的事情。
编辑:还看一下量角器api及其wait()
工作原理:
ptor.wait(function () {
// Return a condition. Code will continue to run once it is true
}, 10000); // Only do this for 10 seconds
编辑:尝试ptor.driver.get('my-page');
代替ptor.get('my-page');
编辑:量角器现在公开browser
为全局,因此您可以使用browser.get('index.html#/foo')
或browser.wait()
等。
问题内容: 我按照本教程安装了量角器,当我使用webdriver-manager更新时,它说: 您在我尝试进行量角器测试时说: 我检查了 local.dp.js ,发现它试图从 .. \ node_modules \ protractor \ selenium \ chromedriver加载chromedriver, 但是只有一个空的zip文件 chromedriver_2.9 。 因此,我手动
问题内容: 我正尝试按照官方的《入门指南》启动并运行量角器。 命令 似乎运行顺利: 但是,跑步 如建议导致错误: 并且旧窗口抛出异常: 知道有什么问题吗? 问题答案: 删除该未完成的zip文件(chromedriver_x.xx.zip),您需要它再次执行更新。该文件夹将如下所示: chromedriver chromedriver_2.10.zip selenium-server-standal
当我用量角器运行cucumber时,我收到错误信息,任何人都可以帮助我提出原因: -----------------config.js--------------- ----------login.feature------------
有人帮忙吗? 我清除了节点模块并:
问题内容: 以下是我的标记 我正在尝试使用该类的元素。 我用来访问转发器的代码是: 有没有一种方法可以通过在jQuery中执行以下操作来获取元素: 有没有办法用量角器做类似的事情? 问题答案: 这应该适合您的示例: